簡體   English   中英

如何從drawable創建imges的ArrayList並在片段ListView中顯示它?

[英]How do I create an ArrayList of imges from drawable and display it in fragment ListView?

我有片段中的圖像,我想在片段ListView顯示。

這是我試過的,你能猜出我的代碼有什么問題嗎?

我制作了一個可繪制圖像的整數ArrayList

 ArrayList<Integer> ex1 = new ArrayList<Integer>();
    ex1.add(R.drawable.a);
    ex1.add(R.drawable.b);
    ex1.add(R.drawable.c);
    ex1.add(R.drawable.d);

並試圖將它傳遞給片段,就像我們傳遞任何String ArrayList

我在這樣的主要活動中宣布了

public static final String Data = "list";

接着

    bundle = new Bundle();
    bundle.putIntegerArrayList(DATA, ex1);
    Fragment fragment = new ExFragment();
    fragment.setArguments(arguments);
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction ft = fragmentManager.beginTransaction();
    ft.replace(R.id.container, fragment);
    ft.addToBackStack("");
    ft.commit();

然后在片段類中

private ArrayList<Integer> images = new ArrayList<>();

在片段的創建

 if (getArguments() != null) {
        images = getArguments().getIntegerArrayList(MainMenu.DATA);
    }

並在oncreateview

View rootView = inflater.inflate(R.layout.fragment_ex, container, false);
    ListView listView = (ListView) rootView.findViewById(R.id.listview);
    ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, R.id.text1, images);
    listView.setAdapter(adapter);

但它給了我NullPointerException

java.lang.NullPointerException
         at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:395)
         at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
         at android.widget.AbsListView.obtainView(AbsListView.java:2724)
         at android.widget.ListView.makeAndAddView(ListView.java:1811)
         at android.widget.ListView.fillDown(ListView.java:697)
         at android.widget.ListView.fillFromTop(ListView.java:763)
         at android.widget.ListView.layoutChildren(ListView.java:1641)
         at android.widget.AbsListView.onLayout(AbsListView.java:2549)
         at android.view.View.layout(View.java:15762)
         at android.view.ViewGroup.layout(ViewGroup.java:4867)

如果我從Integer更改為String並放入String ArrayList則此代碼與Strign ArrayList完美配合

Java類CustomAdapter

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends BaseAdapter{

    String [] Text;
    int [] Image;
    Context context;

    private static LayoutInflater inflater=null;
    public CustomAdapter(MainActivity mainActivity, String[] TextItem, int[] mainImages) {
        Text = TextItem;
        context = mainActivity;
        Image = mainImages;
        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }


    @Override
    // Get number of items in list
    public int getCount() {
        return Text.length;
    }

    @Override
    // Get position of item in list
    public Object getItem(int position) {
        return position;
    }

    @Override
    // ???
    public long getItemId(int position) {
        return position;
    }

    public class Holder
    {
        TextView tv;
        ImageView img;
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        Holder holder=new Holder();
        View rowView;

        rowView = inflater.inflate(R.layout.YOURCUSTOMXML, null);

        /** Get relevant view
         * Set image/text resource, based on list name, based on list position
         */
        holder.img=(ImageView) rowView.findViewById(R.id.IMAGEIDINCUSTOMXML);
        holder.img.setImageResource(Image[position]);

        holder.tv=(TextView) rowView.findViewById(R.id.TEXTIDINCUSTOMXML);
        holder.tv.setText(Text[position]);

        return rowView;
    }

}

此類允許您使用自定義XML布局創建自己的ListAdapter。
將適配器加載到ListView時,可以在片段中調用它而不是android.R.layout.simple_list_item_1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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