簡體   English   中英

Android-具有自定義適配器的GridView不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM