【问题标题】:Populating Listview By Passing Multiple ArrayLists Through Custom BaseAdapter通过自定义 BaseAdapter 传递多个 ArrayList 来填充 Listview
【发布时间】:2012-06-15 06:53:12
【问题描述】:

解决通过自定义适配器填充列表视图的谜团,该适配器正在传递多个数组列表,如下定义。

主要活动: 我们声明数组列表:

private static ArrayList<Integer> img_challengeicon_values;
static {
    img_challengeicon_values = new ArrayList<Integer>();
    img_challengeicon_values.add(R.drawable.actionbar_hello);
    img_challengeicon_values.add(R.drawable.actionbar_world);
}
private static ArrayList<Integer> img_challengerpic_values;
static {
    img_challengerpic_values = new ArrayList<Integer>();
    img_challengerpic_values.add(R.drawable.actionbar_look);
    img_challengerpic_values.add(R.drawable.actionbar_down);
}

我们声明我们的适配器:

arrayAdapter adapter = new arrayAdapter(this, 
            img_challengeicon_values,
            img_challengerpic_values);

适配器活动: 我们扩展 BaseAdapter && 设置变量:

extends BaseAdapter {
private final Context context; 
private ArrayList<Integer> img_challengeicon_values;
private ArrayList<Integer> img_challengerpic_values;

我们调用构造函数:

public arrayAdapter(Context context,
        ArrayList<Integer> img_challengeicon_values,
        ArrayList<Integer> img_challengerpic_values) {
this.context = context;
    this.img_challengeicon_values = img_challengeicon_values;
    this.img_challengerpic_values = img_challengerpic_values;
}

最后,我们调用 getView,膨胀布局,并根据传递的变量定义分配图像视图;像这样:

imgChallengeIcon.setImageResource(img_challengeicon_values.get(position));
imgChallengerPic.setImageResource(img_challengeicon_values.get(position));

【问题讨论】:

  • 不太明白您在此处要求的内容。您的列表是否为空/崩溃?
  • 这是问题的迹象。目前已经找到了一种解决方法,涉及直接在数据库上执行查询;避免将操作抽象到它自己的类中。通过调用通知初始化游标上的数据集更改,可以有效地重新查询数据。

标签: android listview arraylist baseadapter


【解决方案1】:
lstdata = (ListView) findViewById(R.id.inboxlist);
DB_listAdapter adapter = new DB_listAdapter (this,inboxdatalist);
lstdata.setAdapter(adapter);

public class DB_listAdapter extends BaseAdapter {

    private Activity activity;
    ArrayList<Object> Object_Datas;
    private static LayoutInflater inflater=null;
    ViewHolder holder;
    String strurl;


    public DB_listAdapter (Activity a,int flag, ArrayList<Object> inboxdatalist{
        // TODO Auto-generated constructor stub


        activity=a;
        this.Object_Datas=inboxdatalist;

        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new FB_ImageLoader(activity.getApplicationContext());
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return this.Object_Datas.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class ViewHolder{
        public TextView username;
        public TextView message;
        public ImageView image;
        public ImageButton imgaddbtn;
    }
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View v=convertView;



        if(v==null)
        {
            //LayoutInflater vi = (LayoutInflater)activity.getSystemService(myContext.LAYOUT_INFLATER_SERVICE);

            v = inflater.inflate(R.layout.listitemfb, null);

        } 

        TextView text=(TextView)v.findViewById(R.id.username);
        TextView text2=(TextView)v.findViewById(R.id.message);
        ImageView image=(ImageView)v.findViewById(R.id.avatar);





        return v;

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 2019-08-22
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多