android - 带复选框的 ListView

标签 android listview checkbox

我想显示一个带有复选框的 ListView

          checkbox listitem1
          checkbox listitem2
          checkbox listitem3
                  .
                  .
                  .
                  .

如果单击 ListView 中的任何列表项,则选中的相应复选框将为真。我试过下面的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<CheckBox android:text=""
    android:id="@+id/list_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="false"
    ></CheckBox>
 <TextView
 android:id="@+id/songname"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:layout_marginTop="10px"
 android:layout_marginLeft="60px"/>
 <TextView
 android:id="@+id/artist"
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:layout_marginTop="30px"
 android:layout_marginLeft="60px"/>
</RelativeLayout> 

类文件是

 list.setOnItemClickListener(this);
 list.setAdapter(new EfficientAdapter(this));

private static class EfficientAdapter extends BaseAdapter 
    {
       private LayoutInflater mInflater;

       public EfficientAdapter(Context context) 
       {
       mInflater = LayoutInflater.from(context);
       }

       public int getCount() 
       {
       return title.length;
       }

       public Object getItem(int position) 
       {
       return position;
       }

       public long getItemId(int position) 
       {
           return position;
       }

       public View getView(int position, View convertView, ViewGroup parent) 
       {
       ViewHolder holder;
       if (convertView == null) 
       {
       convertView = mInflater.inflate(R.layout.selectsongs, null);
       holder = new ViewHolder();

       holder.title = (TextView) convertView.findViewById(R.id.songname);
       holder.artist = (TextView) convertView.findViewById(R.id.artist);
       holder.check = (CheckBox) convertView.findViewById(R.id.list_checkbox);    
       convertView.setTag(holder);
       } 
       else 
       {
       holder = (ViewHolder) convertView.getTag();
       }

       holder.title.setText(title[position]);  
       holder.artist.setText(artist[position]);

       return convertView;
       }

       static class ViewHolder 
       {
       TextView title,artist;

       CheckBox check;

       }
       }
    @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
    // TODO Auto-generated method stub
    Log.e("name",title[position]);

}

但在此 ListView 上的 OnClickItemClickListener 不起作用。当我单击 ListView 中不在列表项上的复选框时,复选框可检查为真。所以请告诉我如何显示带有复选框的 ListView 以及当我单击列表项时列表项复选框是否为真。

最好的问候。

提前致谢

最佳答案

最好使用 ChechBoxPreference 完成列表.

使用偏好的主要优点是您无需编写代码来保存值,您可以轻松地在任何 Activity 中获取值。该值作为 key 对值存储在 android 首选项中。您可以使用“KeyName”引用该值。

以下链接将帮助您对此有所了解:

http://geekswithblogs.net/bosuch/archive/2010/12/03/android---creating-a-custom-preferences-activity-screen.aspx

关于android - 带复选框的 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376082/

相关文章:

java - 当按后退按钮时, ListView 会转到顶部。如何解决这个问题?

带有复选框的 jQuery 版本控制错误

javascript - 复选框的奇怪 onclick 行为。选择复选框项目时尝试写入浏览器控制台

Android:以编程方式更改单选按钮和复选框的颜色

android - 更新 getCheckedItemPositions()

android - <audio> 无法使用 Android 浏览器在 https 上播放

Android Espresso - 单击带有图像和文本的抽屉导航项目

android - 单击按钮时在 ListView 上触发 OnItemClick

android - 以下 android CustomAdapter 不起作用?

css - Bootstrap - 复选框左侧的标签