2013-03-19 39 views
0

复选框我在布局得到从列表视图baseadapter

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="100" > 

<ListView 
     android:id="@+id/listInbox" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:divider="#b5b5b5" 
     android:dividerHeight="1dp" 
     android:layout_weight="20" 
     android:listSelector="@drawable/list_selector" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="80" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/bdelete" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:text="@string/delete_selected" /> 

</LinearLayout> 

</LinearLayout> 

列表视图,这是此列表视图

<?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="wrap_content" 
    android:background="@drawable/list_selector" 
    android:orientation="horizontal" 
    android:padding="5dip" > 

    <!-- ListRow Left sied Thumbnail image --> 

    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="5dip" 
     android:background="@drawable/image_bg" 
     android:padding="3dip" > 

     <ImageView 
      android:id="@+id/list_image" 
      android:layout_width="50dip" 
      android:layout_height="50dip" /> 
    </LinearLayout> 

    <!-- Title Of Song --> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:text="Title" 
     android:textColor="#040404" 
     android:textSize="15dip" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- Artist Name --> 

    <TextView 
     android:id="@+id/artist" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/title" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:gravity="left" 
     android:text="Sender" 
     android:textColor="#343434" 
     android:textSize="15sp" /> 

    <!-- Rightend Duration --> 


    <!-- Rightend Arrow --> 

    <ImageView 
     android:id="@+id/ivArraw" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/url" /> 

    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/artist" 
     android:layout_alignBottom="@+id/artist" 
     android:layout_alignRight="@+id/artist" 
     android:visibility="invisible" 
     /> 

</RelativeLayout> 

布局适配器和我的活动,定义了什么适配器

 lv.setAdapter(new ImageInboxAdapter(inbox.this, bitmap, messageNo, messageTitle, senderId, senderName,selected)); 

并且这是baseadapter代码

import android.annotation.SuppressLint; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class ImageNewsAdapter extends BaseAdapter{ 
    Context context; 
    String[] newsNo,title_news; 
    Bitmap[] bitmap; 
    public ImageNewsAdapter(Context context,String[] newsNo,String[] title_news, Bitmap[] bitmap) { 
     this.context=context; 
     this.newsNo=newsNo; 
     this.title_news=title_news; 
     this.bitmap=bitmap; 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return title_news.length; 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @SuppressWarnings("deprecation") 
    @SuppressLint("NewApi") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View gridView; 

     if(convertView==null){ 

      gridView=new View(context); 

      gridView=inflater.inflate(R.layout.custom_news, null); 




     }else{ 
      gridView = (View) convertView; 
     } 

     TextView tv=(TextView)gridView.findViewById(R.id.tvTitle); 

     tv.setText(title_news[position]); 

     /*RelativeLayout rlImageMain=(RelativeLayout)gridView.findViewById(R.id.RlImageTitle); 

     rlImageMain.setBackground(new BitmapDrawable(bitmap[position])); 

     */ 
     ImageView ivMain= (ImageView)gridView.findViewById(R.id.ivMain); 

     ivMain.setImageBitmap(bitmap[position]); 
     return gridView; 
    } 


} 

我想从复选框得到检查的值,并返回到我的活动

+0

是用户选择的项目从列表中?然后你可以注册[OnItemSelectedListener](http://developer.android.com/reference/android/widget/AdapterView.html#setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener))... – chuthan20 2013-03-19 01:56:06

回答

1

我找到了解决办法

先制作一个静态布尔变量的问题

static Boolean checkboxstate[]; 

然后把它定义在具有列表大小的构造函数

checkboxstate=new Boolean[messageNo.length]; 

然后就点击收听您的复选框,并填补了布尔数组

if(checkboxstate[position]==null){ 
       checkboxstate[position]=false; 
      } 
      cb.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        if(((CheckBox)v).isChecked()){ 
         checkboxstate[position]=true; 
         v.setSelected(true); 
        }else{ 
         checkboxstate[position]=false; 
         v.setSelected(false); 
        } 
       } 
      }); 

终于

public class ImageInboxAdapter extends BaseAdapter{ 
    Context context; 
    String[] messageNo,messageTitle,senderId,senderName; 
    Bitmap[] bitmap; 
    Boolean selected; 
    static Boolean checkboxstate[]; 
    int checkedp; 
    public ImageInboxAdapter(Context context, Bitmap[] bitmap,String[] messageNo,String[] messageTitle, String[] senderId,String[] senderName,Boolean selected) { 
     this.context=context; 
     this.bitmap=bitmap; 
     this.messageNo=messageNo; 
     this.messageTitle=messageTitle; 
     this.senderId=senderId; 
     this.senderName=senderName; 
     this.selected=selected; 
     checkboxstate=new Boolean[messageNo.length]; 



    } 


    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return messageNo.length; 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @SuppressLint("NewApi") 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View gridView; 
     if(convertView==null){ 

      gridView=new View(context); 

      gridView=inflater.inflate(R.layout.list_row_message, null); 




     }else{ 
      gridView = (View) convertView; 
     } 

     TextView tvTitle=(TextView)gridView.findViewById(R.id.title); 
     tvTitle.setText(messageTitle[position]); 

     TextView tvSender=(TextView)gridView.findViewById(R.id.artist); 
     tvSender.setText(senderName[position]); 

     CheckBox cb=(CheckBox)gridView.findViewById(R.id.checkBox1); 
     ImageView ivArraw=(ImageView)gridView.findViewById(R.id.ivArraw); 

     /*RelativeLayout rlImageMain=(RelativeLayout)gridView.findViewById(R.id.RlImageTitle); 

     rlImageMain.setBackground(new BitmapDrawable(bitmap[position])); 

     */ 
     ImageView ivMain= (ImageView)gridView.findViewById(R.id.list_image); 

     ivMain.setImageBitmap(bitmap[position]); 

     if(selected==true){ 
      cb.setVisibility(CheckBox.VISIBLE); 
      ivArraw.setVisibility(ImageView.INVISIBLE); 
      if(checkboxstate[position]==null){ 
       checkboxstate[position]=false; 
      } 
      cb.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        if(((CheckBox)v).isChecked()){ 
         checkboxstate[position]=true; 
         v.setSelected(true); 
        }else{ 
         checkboxstate[position]=false; 
         v.setSelected(false); 
        } 
       } 
      }); 
     } 
     return gridView; 
    } 

}