Android中ListView的条目中有button时,item和button抢焦点问题
来源:互联网 发布:以前java上的石器时代 编辑:程序博客网 时间:2024/05/15 21:47
Android中ListView的条目中有button时,item的点击事件失效。
这个问题我总结了3点:
1、button的点击事件要写在自定义适配器中。
2、ListView条目点击事件要写在Activity中。
3、button的属性中必须要写 android:focusable="false"。
4、在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。
写好以上三点,则listview的条目有点击事件,button中也有点击事件,一切正常。
下面是我写的一个例子
核心代码:
自定义适配器:
public class MyBaseAdapter extends BaseAdapter {
private Context context;
private List<Map<String, Object>> listData;
public MyBaseAdapter(Context context,List<Map<String, Object>> listData) {
this.context=context;
this.listData=listData;
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=layoutInflater.inflate(R.layout.main_item, null);
Button button = (Button) convertView.findViewById(R.id.button1);
TextView tv=(TextView) convertView.findViewById(R.id.textView1);
String wenzi=(String) listData.get(position).get("wenzi");
tv.setText(wenzi);
/**
* 点击事件
*/
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent();
intent.setClass(context, OtherActivity.class);
context.startActivity(intent);
}
});
return convertView;
}
}//class
activity中
public class MainActivity extends Activity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView) findViewById(R.id.listView1);
//得到数据
List<Map<String, Object>> listData = myGetData();
//得到适配器对象
MyBaseAdapter adapter=new MyBaseAdapter(this, listData);
listView.setAdapter(adapter);
/**
* 点击事件
*/
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Toast.makeText(MainActivity.this, "条目被点击了", 10).show();
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
startActivity(intent);
}
});
}
/**
* 自己编一组数据
* @return
*/
private List<Map<String, Object>> myGetData() {
List<Map<String, Object>>list =new ArrayList<Map<String,Object>>();
for (int i = 0; i < 10; i++) {
Map<String, Object>map=new HashMap<String, Object>();
map.put("wenzi", "zhangfei"+i);
list.add(map);
}
return list;
}
}//class
listview的item中的Button
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"
android:focusable="false"
/>
如果没有看明白,下载我的例子
http://download.csdn.net/detail/zhaihaohao1/8274795
- Android中ListView的条目中有button时,item和button抢焦点问题
- Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题
- Android ListView中item条目点击被item上的button点击事件抢夺的解决方案
- listview的条目中有button,或item点击失效的解决方案
- Listview中item与button类控件获取焦点问题
- Android listview的item中button的点击事件 item和button 可同时点击
- 如何在listview中添加button,使得listview item 和 button获取焦点不冲突
- listview中有button,强占条目的点击事件
- 为什么ListView条目中有Button时setOnItemClickListener不生效
- Android ListView的Item中的按钮Button和ImageButton共存、抢夺焦点问题
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- Listiew的Item点击无反应(在item中有Button等抢焦点的控件存在时)
- Android ListView/recyclerView条目中EditText容易失去焦点的问题和取出横向时上下滚动有阴影
- listview的item内部有Button问题
- Listview的item中有button类导致onitemclick无效
- Android中ListView点击和ListView的item里面的Button或ImageView不能同时生效问题的解决
- Android中ListView(gridview)的item中有button等子点击控件时不能响应点击事件的原因
- 关于对FLASH开发,starling、starling feathers、starling MVC框架的理解
- SolrCore 'collection1' is not available due to init failure: Index locked for write for core collect
- IOS界面UI设计10之屏幕适配UITarbar、柱状图、相对位置
- 解析大写或不规范的JSON
- Java-位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- Android中ListView的条目中有button时,item和button抢焦点问题
- HTTP协议分析系列(二)------HTTP请求信息和相应信息的格式
- 深入hibernate的三种状态
- apache 多端口配置
- PHP常见漏洞的防范措施
- Oracle中Round()和Trunc()用法
- kettle-engine.jar与 log4j.jar包冲突问题解决办法
- OSChina 的URL重写处理类源码
- Android:调用系统图库/裁剪图片