ListItem中的多个可单击区域

时间:2014-04-09 04:05:35

标签: android android-listview android-arrayadapter android-listfragment

我有一个列表,其组织如下: CheckBoxImageButtonLinearLayout{ TextView title, TextView Subtitle}

我要做的是ListItem有三个单独的可点击区域:复选框应该是checkableImageButton,以及实际的列表项本身。默认情况下,该复选框处于隐藏状态,但是当按下列表标题上的某个按钮时(即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而不是图像按钮,在成功方面很少。感谢您抽出宝贵时间来研究这个问题。

0 个答案:

没有答案