我有一个列表,其组织如下:
CheckBox
,
ImageButton
,
LinearLayout{ TextView title, TextView Subtitle}
我要做的是ListItem
有三个单独的可点击区域:复选框应该是checkable
,ImageButton
,以及实际的列表项本身。默认情况下,该复选框处于隐藏状态,但是当按下列表标题上的某个按钮时(即SELECT
),该复选框可以显示。我只想要一种从列表中选择多个项目的方法,并且我不会不可逆转地使用隐藏的复选框 - 如果有一种方法可以更容易,我会很高兴听到替代方案。
以下是我的适配器的相关代码段:
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
final T t = list.get(position);
if(convertView == null){
convertView = vi.inflate(R.layout.folder_list_item,parent,false);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.text_view_folder_item);
holder.subtitle = (TextView) convertView.findViewById(R.id.text_view2);
holder.eye = (ImageButton) convertView.findViewById(R.id.folder_vis_button);
holder.check = (CheckBox) convertView.findViewById(R.id.phone);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(t.getName());
holder.subtitle.setText(t.getDescription());// = (TextView) convertView.findViewById(R.id.text_view2);
return convertView;
}
XML如下。正如你所看到的,我已经使各个列表项可以点击但不可解决,正如我在阅读有关这个问题的帖子中的建议。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:clickable="true"
android:focusable="true">
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:visibility="invisible"
android:focusable="false"/>
<ImageButton
android:id="@+id/folder_vis_button"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerInParent="true"
android:scaleType="fitXY"
android:layout_toRightOf="@+id/checkbox"
android:contentDescription="@string/contentDescription"
android:focusable="false"
android:src="@drawable/open_eyeball" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_toRightOf="@id/folder_vis_button"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical"
android:focusable="false"
android:clickable="true">
<TextView
android:id="@+id/text_view_folder_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:focusable="false"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/text_view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:focusable="false"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
如果我将listitem转换为实际使用内置列表项(例如android.R.layout.simple_list_item_1
),则单击列表项。
但是,当我使用自己的布局时,我无法在列表项本身上获得点击事件,只需在图像按钮上。
我尝试以不同的方式膨胀视图(int资源,ViewGroup根)...我尝试使用图像按钮,或者仅使用复选框,使用imageview而不是图像按钮,在成功方面很少。感谢您抽出宝贵时间来研究这个问题。