2012-03-07 8 views
2

Gridviewにデータを追加するbaseAdapterクラスがあります。 リストがアダプタに追加される前にソートする方法はありますか?私はそれらを追加する前に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; 
} 

} 

でどのようにソートI(私のリストは非常にlong.Iはそれをcropedされるプログラムであるため)、これらの項目でください。

答えて

11

あなたがあなた自身のコンパレータのオブジェクトを定義することができますまず第一に:

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メソッドを呼び出す:あなたは不変モードがを使用する場合に比較する必要がある場合は

Collections.sort(Comm_AppsList, myComparator); 

compareToの代わりにcompareToIgnoreCaseメソッドを使用します。

+0

@ rciovatiありがとう、ちょうどあなたから答えました。私は感謝します。また、私は最終的な論文としてアンドロイドのアプリケーションを構築することを考えています。あなたが私が何をすることができるか考えてもらえますか?あるいは私が訪問できるリソースのリンクがありますか? –

+0

私の時間を保存してくれてありがとう –

関連する問題