2012-06-12 42 views
1

解決通過自定義適配器填充列表視圖的難題,該自定義適配器正在通過如下定義的多個陣列列表。通過自定義BaseAdapter傳遞多個ArrayList來填充列表視圖

主要活動: 我們聲明的ArrayList:

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,膨脹的佈局,並從傳遞的變量定義分配imageviews;像這樣:

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

不太明白你問什麼在這裏..是您的列表爲空/崩潰? – Zelleriation

+0

這是問題的表示。目前已經找到一種解決方法,它涉及到直接對數據庫執行查詢。避免將操作抽象爲自己的類。通過在初始化遊標上調用通知數據集更改,可以有效地重新查詢數據。 – wurde

回答

0
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; 

    } 

} 
相關問題