2012-03-07 108 views
2

我有一個baseAdapter類,它將數據添加到Gridview。 請問有沒有辦法在列表添加到適配器之前對列表進行排序?如何在setAdapter之前對BaseAdapter中的項目進行排序?

Comm_AppsList=new ArrayList<Appis_Infos>(); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.skype), "Skype","com.skype.raider")); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.yahoomessenger),"Messenger","com.yahoo.mobile.client.android.im")); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.whatsappm),"WhatsApp","com.whatsapp")); 
    Comm_AppsList.add(new Appis_Infos(BitmapFactory.decodeResource(com_res, R.drawable.yahoomail),"Mail","com.yahoo.mobile.client.android.mail")); 

    Com_gridview.setAdapter(new CommAppis_Adapter(this, Comm_AppsList)); 

這裏是BaseAdapter

class CommAppis_Adapter extends BaseAdapter{ 
private Context AIcontext; 
private List<Appis_Infos>AdList; 

CommAppis_Adapter(Context Aicontext, List<Appis_Infos> aDlist){ 
AIcontext=Aicontext; 
AdList=aDlist; 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return AdList.size(); 
} 

@Override 
public Object getItem(int it_position) { 
    // TODO Auto-generated method stub 
    return AdList.get(it_position); 
} 

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

@Override 
public View getView(int Vposition, View Aview, ViewGroup Vparent) { 
    // TODO Auto-generated method stub 
    Appis_Infos appsData=AdList.get(Vposition); 
    Comm_Viewholder holder=null; 

    if(Aview==null){ 
     LayoutInflater apps_inflater=LayoutInflater.from(AIcontext); 
     Aview=apps_inflater.inflate(R.layout.comm_appis, null); 
     holder=new Comm_Viewholder(); 

     holder.apps_icons=(ImageView)Aview.findViewById(R.id.comm_imageview); 
     holder.apps_name=(TextView)Aview.findViewById(R.id.comm_tvName); 


     Aview.setTag(holder); 
    }else{ 
     holder=(Comm_Viewholder)Aview.getTag(); 
    } 

    holder.apps_icons.setImageBitmap(appsData.getIcon()); 
    holder.apps_name.setText(appsData.getName()); 

    return Aview; 
} 

} 

請我怎麼樣(編程,因爲我的列表非常long.I只是croped吧)這些項目之前,我將它們添加。

回答

11

首先,你可以定義自己的比較對象:如果您需要在情況不變的模式來比較使用

Collections.sort(Comm_AppsList, myComparator); 

Comparator<Appis_Infos> myComparator = new Comparator<Appis_Infos>() { 
    public int compare(Appis_Infos obj1,Appis_Infos obj2) { 
     return obj1.getName().compareTo(obj2.getName()); 
    } 
}; 

,然後調用Collections.sort方法compareToIgnoreCase方法而不是compareTo

+0

@ rciovati謝謝你從你的答案中找出答案。我很感激。此外,我正在考慮構建一個Android應用程序作爲我的最終論文。請你有什麼想法我可以做什麼,可以表現出來?或者你有任何我可以訪問的資源鏈接? – 2012-03-07 11:14:47

+0

感謝您節省我的時間 – 2015-12-11 15:18:34

相關問題