我看到實現這一目標的唯一方法就是確實創建一個自定義適配器類。 我用這個來創建一個文件瀏覽器,根據不同的操作選擇的項目是文件或文件夾。
基本上,您需要創建一個擴展ArrayAdapter的自定義適配器(如果所有項目都從同一個類繼承,則可以使用其他基類)。下面是一個示例代碼:
public class MyCustomAdapter extends ArrayAdapter<Object> {
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<Object> objects) {
super(context, textViewResourceId, objects);
mList = objects;
}
public View getView(int position, View convertView, ViewGroup parent) {
Object obj = mList.get(position);
View v = convertView;
LayoutInflater vi = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (obj.getClass().isAssignableFrom(MyClass1.class)){
v = vi.inflate(R.layout.myclass1_item_layout, null);
setupViewClass1(obj,v);
} else if (obj.getClass().isAssignableFrom(MyClass2.class)){
v = vi.inflate(R.layout.myclass2_item_layout, null);
setupViewClass2(obj,v);
}
return v;
}
private void setupViewClass1 (Object obj, View v){
// setup the content of your view (labels, images, ...)
}
private void setupViewClass2 (Object obj, View v){
// setup the content of your view (labels, images, ...)
}
private ArrayList<Object> mList;
}
然後,你需要添加一個OnItemClickListener以及一個OnCreateContextMenuListener處理click和長按事件清單上,再使上班級的對象的過濾器。
你不清楚什麼是「這種效應」,你不清楚。 – CommonsWare 2010-09-29 22:07:28
我已經更新了我的問題來解釋我的意思是「這種效應」。希望這可以幫助你;) – pixel 2010-10-04 09:57:43