ListView
을 조각에 넣으려고하는데 내 응용 프로그램이 충돌합니다. 나는 ListView
을 활동에 넣는 법을 배우기 위해 this guide을 따라 갔지만 코드에 약간의 변경을 가하기 위해 조각에 넣고 싶습니다. 이 내 조각입니다 :ListView를 조각에 넣는 방법
그리고 이것은 내 Element
입니다 :
공용 클래스 FaqFragment이 조각을 확장 {
public class ElementAdapter extends ArrayAdapter<Element>{
FragmentActivity context;
int layoutResourceId;
Element data[] = null;
public ElementAdapter(FragmentActivity fragmentActivity, int layoutResourceId, Element[] data) {
super(fragmentActivity, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = fragmentActivity;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
WeatherHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((FragmentActivity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new WeatherHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (WeatherHolder)row.getTag();
}
Element element = data[position];
holder.txtTitle.setText(element.title);
holder.imgIcon.setImageResource(element.icon);
return row;
}
static class WeatherHolder
{
ImageView imgIcon;
TextView txtTitle;
}
이 내 ArrayAdapter
public static Fragment newInstance() {
FaqFragment fragment = new FaqFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
private ListView listView1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_faq, container, false);
Element element_data[] = new Element[]
{
new Element(R.drawable.goccia, "Goccia1"),
new Element(R.drawable.goccia, "Goccia2"),
new Element(R.drawable.goccia, "Goccia3"),
new Element(R.drawable.goccia, "Goccia4"),
new Element(R.drawable.goccia, "Goccia5")
};
ElementAdapter adapter = new ElementAdapter(getActivity(), android.R.layout.simple_list_item_1, element_data);
listView1 = (ListView)v.findViewById(R.id.listView1);
View header = (View)getLayoutInflater(savedInstanceState).inflate(R.layout.element, null);
listView1.addHeaderView(header);
listView1.setAdapter(adapter);
return v;
}
이다} :
public class Element {
public int icon;
public String title;
public Element(){
super();
}
public Element(int icon, String title) {
super();
this.icon = icon;
this.title = title;
}
앱에는 3 개의 탭이 있습니다. 탭에 스 와이프하면 앱이 충돌합니다. 코드는 이미 내가 작성한 코드입니다 (조각).
가 로그 캣에서이 오류가 :
03-13 11:25:39.455: E/AndroidRuntime(2840): at com.example.bluhackathon.ElementAdapter.getView(ElementAdapter.java:47)
내가 라인 47, 48 및 ArrayAdapter
49을 삭제 시도하고 응용 프로그램이 충돌하지 않았다 (물론 빈 요소 목록이 있었다.
라인 47, 48, 49 :
Element element = data[position];
holder.txtTitle.setText(element.title);
holder.imgIcon.setImageResource(element.icon);
안녕하세요, 조각 처리에 대한 내 답변을 확인하십시오. http://stackoverflow.com/questions/17918198/how-to-keep-tabs-visible-on-every-activity/17918804#17918804 목록 뷰를 조각으로 관리했습니다. . –
47 행에서 발생하는 예외의 종류를 아는 것이 도움이됩니다. –