如何将YES图像绑定到多个可选自定义列表

时间:2011-12-29 12:43:06

标签: android android-listview

我正在尝试创建一个图像列表,在其中我可以选择多个项目,我有一个是的图标,我想为我选择的任何项目设置可见(像复选框)并且在取消选择时不可见...我已将图像添加到xml文件中并设置其visibility as GONE(因为它最初不应该可见)..请告诉我可能的解决方案..

我已设置list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

的列表

我的自定义BaseAdapter类包含

public static class ViewHolder{
    public TextView text;
    public ImageView image,yesimage;
    public TextView quantity;        
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    final ViewHolder holder;

    if(convertView==null){
        vi = inflater.inflate(R.layout.item, null);
        holder=new ViewHolder();
        holder.image=(ImageView)vi.findViewById(R.id.image);
        holder.text=(TextView)vi.findViewById(R.id.text);
        holder.quantity=(TextView)vi.findViewById(R.id.quantity);     
        holder.yesimage=(ImageView)vi.findViewById(R.id.selectedyes);        
        vi.setTag(holder);


    }
    else
        holder=(ViewHolder)vi.getTag();  

   // Here I wanted to know how can i set visibility of yesimege for individual    selected items on list

    holder.text.setText(items[position]);
    holder.image.setTag(data[position]);
    holder.quantity.setText(Integer.toString(qty[position]).trim());

    imageLoader.DisplayImage(data[position], activity, holder.image);
    return vi;
}

xml snippet item.xml

  <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <ImageView
  android:id="@+id/image"
  android:layout_width="50dip"
  android:layout_height="50dip" 
  android:src="@drawable/stub" 
  android:scaleType="centerCrop"/>

  <TextView
  android:id="@+id/text"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" 
  android:layout_gravity="left|center_vertical" 
  android:textSize="15dip" 
  android:typeface="sans"
      android:textColor="#000000"
  android:layout_marginLeft="10dip"/>

    <TextView
  android:id="@+id/quantity"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" 
  android:layout_gravity="right|center_vertical" 
  android:gravity="right"
  android:paddingRight="10dp"
  android:textSize="18dip" 
  android:typeface="sans"
      android:textColor="#000000"/>


         <ImageView android:id="@+id/selectedyes" 
                    android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:visibility="gone"
        android:src="@drawable/itemselected" 
        android:layout_marginRight="8dip" 
        android:soundEffectsEnabled="false" ></ImageView> 

     </LinearLayout>

1 个答案:

答案 0 :(得分:0)

您必须保存/存储您的项目是否被选中。 之后,检查是否选择了该项目,并使用以下之一:

holder.image.setVisibility(View.GONE); // to make it disappear

holder.image.setVisibility(View.VISIBLE); // to display it

我不确切知道数据数组中的内容,但您可以将状态保存在那里。

if (data[position].isVisible()) {
    holder.image.setVisibility(View.VISIBLE); // to display it
else
    holder.image.setVisibility(View.GONE); // to make it disappear

您可以在ListView上设置OnItemClickListener来捕获点击事件。

listView.setOnItemClickListener(new OnItemClickListener() {
 public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
            // Put your custom code here
        }
 });

它能回答你的问题吗?