android ListView点击事件

上一篇 / 下一篇  2012-11-09 12:31:15 / 个人分类:android开发

在listview的item中包含有textview和checkBox。我们既想获取listitem的点击事件,又想获取listitem中textview的点击事件和listitem中checkBox的点击事件,那么有没有办法实现呢?答案是肯定的,我们只需重新创建listview的适配器继承BaseAdpter就可以了。另外如果有checkBox或者imageview在内的话就必须设置它聚焦为false。
关键点:
1.listview的适配器要继承BaseAdpt
2.checkBox或者imageview在内的话就必须设置它聚焦为false。
我们经常遇见这样的事情,在listview的item中包含有textview和checkBox。我们既想获取listitem的点击事件,又想获取listitem中textview的点击事件和listitem中checkBox的点击事件,那么有没有办法实现呢?答案是肯定的,我们只需重新创建listview的适配器继承BaseAdpter就可以了。另外如果有checkBox或者imageview在内的话就必须设置它聚焦为false。
关键点:
1.listview的适配器要继承BaseAdpt
2.checkBox或者imageview在内的话就必须设置它聚焦为false。
public classMainextendsActivity {
  
privateListView list;
  
privateListAdapter listadapter;
privateString[] arr;
  
/** Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arr=newString[]{"111","222","333"};
// 绑定Layout里面的ListView
  
list = (ListView) findViewById(R.id.ListView);
 listadapter =newListAdapter();
  
// 添加并且显示
  
list.setAdapter(listadapter);
  
// 添加点击事件
list.setOnItemClickListener(newOnItemClickListener() {
  
publicvoidonItemClick(AdapterView<?> parent, View view,intposition,longid) {
  
// TODO Auto-generated method stub
  
//这里放Item点击事件
  
Toast.makeText(Main.this,"Item点击事件",Toast.LENGTH_SHORT).show();
  
}
});
  
}
  
privateclassListAdapterextendsBaseAdapter {
  
publicintgetCount() {
// TODO Auto-generated method stub
returnarr.length;
  
 }
publicObject getItem(intposition) {
  
// TODO Auto-generated method stub
  
returnposition;
}
  
publiclonggetItemId(intposition) {
  
// TODO Auto-generated method stub
  
returnposition;
}
publicView getView(intposition, View view, ViewGroup parent) {
  
// TODO Auto-generated method stub
  
//获取布局文件
  
if(view ==null) {
  
view = getLayoutInflater().inflate(R.layout.listview,null);
  
}
//获取控件
TextView name = (TextView) view.findViewById(R.id.wishname);
  
CheckBox ck = (CheckBox) view.findViewById(R.id.checkBox1);
if(arr!=null)
{
  
name.setText(arr[position]);
  
 name.setOnClickListener(newOnClickListener() {@Override
  
publicvoidonClick(View v) {
  
// TODO Auto-generated method stub
  
//这里放点击改变事件
Toast.makeText(Main.this,"TextView点击事件",Toast.LENGTH_SHORT).show();
  
 }
});
ck.setOnCheckedChangeListener(newOnCheckedChangeListener() {
publicvoidonCheckedChanged(CompoundButton buttonView,booleanisChecked) {
  
// TODO Auto-generated method stub
//这里放点击改变事件
Toast.makeText(Main.this,"CheckBox点击事件",Toast.LENGTH_SHORT).show();
}
});
}
returnview;
}}
}



主页面的xml布局代码:
<?xml version="1.0"encoding="utf-8"?>
  
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
  
>
  
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:id="@+id/ListView"
>
  
</ListView>
</LinearLayout>
  
listitem的xml布局文件:
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:id="@+id/linear"
>
  
<TextView
android:text="TextView01"
android:layout_width="100px"
android:layout_height="wrap_content"
android:textSize="20dip"
android:gravity="left"
android:id="@+id/wishname"/>
<CheckBox
android:layout_width="40px"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="140dp"
android:focusable="false"//加这句的原因是因为checkBox的点击事件优先级高于listview的点击事件,所以要屏蔽之,如果有多个都要设置,不然也是没有效果的
android:id="@+id/checkBox1"
>
  
</CheckBox>
</LinearLayout>


TAG: Android android

 

评分:0

我来说两句

Open Toolbar