場景:我有n個選項卡,每個選項卡都有自己的listview。我正在使用陣列適配器來生成一個列表視圖。傳遞給arrayadaper的數組具有對象數組。每個對象都有一個「菜單」和「菜單類型」。現在基於菜單類型,如果菜單類型是「menugroup」,我將使用不同的佈局進行繪製,並將背景設置爲RED顏色。如何忽略在列表視圖中進行的點擊
問題很簡單..只要點擊是在菜單組列表視圖中沒有任何應該發生行所做的。換句話說,如何忽略menugroup行中的點擊。這需要僅捕獲onItemClick方法中菜單行中的點擊細節。你能指點一下我的想法嗎?提前致謝。
public class MyCustomAdapter extends ArrayAdapter<Menu> {
private ArrayList<Menu> menuItemList;
Context context;
LayoutInflater vi;
public MyCustomAdapter(Context context ,ArrayList<Menu> menu) {
super(context, 0, menu);
this.menuItemList = new ArrayList<Menu>();
this.menuItemList.addAll(menu);
this.context =context;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private class ViewHolder {
TextView menuItem;
TextView menuGroup;
}
public int getItemViewType(int position) {
if (menuItemList.get(position).getMenuType().equals("menugroup"))
return 0;
return 1;
}
public int getViewTypeCount() {
return 2;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case 0:
convertView = vi.inflate(R.layout.group, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvGroup);
convertView.setBackgroundColor(Color.RED);
break;
case 1:
convertView = vi.inflate(R.layout.item, null);
holder.menuItem = (TextView) convertView.findViewById(R.id.tvItem);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
switch (type) {
case 0:
holder.menuItem.setText(menuItemList.get(position).getItemName()) ;
convertView.setBackgroundColor(Color.RED);
break;
case 1:
holder.menuItem.setText(menuItemList.get(position).getItemName()) ;
break;
}
return convertView;
}
在適配器
}
這是爲BaseAdapter ..我使用arrayAdapter ..這將在ArrayAdapter中有用嗎? – user1822729
'ArrayAdapter'是'BaseAdapter'的子類。他們都以同樣的方式工作。 – Devunwired
完全感謝您的幫助..它的工作原理 – user1822729