![](/img/trans.png)
[英]Android spinner adapter selecting doesn't work with using custom BaseAdapter
[英]Android - GridView with a custom adapter doesn't work
我為ListView和GridView創建了一個自定義適配器。 都是一樣的,我只想要一個帶有List的選項卡,另一個帶有GridView的選項卡。 我可以將數據設置為Fragment1上的ListView,但不能對Fragment2上的GridView進行相同的操作(給出空指針異常)。
代碼如下:
Fragment2.java:
public class FragmentTab2 extends Fragment {
GridView gridView;
Intent intent;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmenttab2, container, false);
gridView = (GridView) rootView.findViewById(R.id.GridView1);
return rootView;
}
public GridView getGridView() {
return gridView;
}
}
CustomAdapter.java:
public class CustomAdapter extends BaseAdapter {
private ArrayList<ListData> data;
private Context context;
CustomAdapter(Context context, ArrayList<ListData> data) {
this.context = context;
this.data = data;
}
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return data.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View rowView = convertView;
if(rowView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.list_item, null);
}
ImageView image = (ImageView) rowView.findViewById(R.id.listLogo);
TextView nameVideo = (TextView) rowView.findViewById(R.id.label);
TextView link = (TextView) rowView.findViewById(R.id.link);
// Get individual object from ArrayList<ListData> and set ListView items
ListData temp_data = data.get(position);
image.setImageBitmap(temp_data.getImage());
nameVideo.setText(temp_data.getName());
link.setText(temp_data.getLink());
return rowView;
}
}
和主要
ListView lw = fragmentTab1.getListView();
lw.setAdapter(new CustomAdapter(this, dataArray));
GridView gr = fragmentTab2.getGridView();
//gr.setAdapter(new CustomAdapter(this, dataArray));
注釋部分給出了Null異常,其他一切都很好。 有任何想法嗎? 謝謝。
android.app.FragmentManager fm = getFragmentManager();
android.app.FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container, fragmentTab2);
ft.addToBackStack(null);
ft.commit();
看起來像fragmentTab2.getGridView();
返回null。
確保fragmenttab2
的GridView實際上具有ID GridView1
。
我認為dataArray的問題可能是它的第一個適配器消耗的,嘗試在網格中設置單獨的數組並檢查
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.