在ListView中实现对ImageView的监听
来源:互联网 发布:按层次遍历二叉树算法 编辑:程序博客网 时间:2024/06/05 10:22
this.storeUser = (ImageView) findViewById(R.id.store_user);this.storeUser.setOnClickListener(new ViewOcl());
最近在做毕设一个android通讯录,对android知识点了解比较少,所以这次要实现在listView中的ImageView实现监听是遇到一点麻烦,无法对ImageView实现监听,虽然也写了监听函数
我的ListView中Item是这样写的
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/user_phote" android:layout_width="40dp" android:layout_height="40dp" android:layout_margin="3dp" android:focusable="false" > </ImageView> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TableLayout android:layout_width="230dp" android:layout_height="wrap_content" android:collapseColumns="1" > <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/user_name" android:layout_width="150dp" android:layout_height="20dp" /> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/user_tel" android:layout_width="150dp" android:layout_height="20dp" android:singleLine="true" /> </TableRow> </TableLayout> <ImageView android:id="@+id/store_user" android:layout_width="30dp" android:layout_height="30dp" android:layout_margin="5dp" android:descendantFocusability="blocksDescendants" android:focusable="false" > </ImageView> </LinearLayout></LinearLayout>
效果图
然后在UserListActivity中添加的监听事件代码如下
1 实现对ListItem的监听
this.userlist = (ListView) findViewById(R.id.userlist);this.userlist.setOnItemClickListener(new AdapterOcl());
2 对ImageView实现监听
this.storeUser= (ImageView) findViewById(R.id.store_user);this.storeUser.setOnClickListener(new ViewOcl());
其实最初是想写ImageButton,但总点击不了,网上有人说是ListView把Button的焦点吃掉了,后来改为ImageView,但会在ImageView添加监听处报空指针,后来又查了一些信息,才知道用到了SimpleAdapter的getView()方法才能实现,后来又新建一个 MyAdapter类重写了一下SimpleAdapter和它的getView方法才实现
MyAdapter中方法如下
public class MyAdapter extends SimpleAdapter {Context context;List<? extends Map<String, ?>> data;int resource;String[] from;int[] to;private LayoutInflater mInflater;public MyAdapter(Context context, List<? extends Map<String, ?>> data,int resource, String[] from, int[] to) {super(context, data, resource, from, to);this.mInflater = LayoutInflater.from(context);this.context=context;this.data=data;this.resource=resource;this.from=from;this.to=to;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = mInflater.inflate(resource, null);for (int i = 0; i < from.length; i++) {//备注1if (convertView.findViewById(to[i]) instanceof ImageView) {ImageView iv = (ImageView) convertView.findViewById(to[i]);iv.setBackgroundResource((Integer) data.get(position).get(from[i]));}else if (convertView.findViewById(to[i]) instanceof TextView) {TextView tv = (TextView) convertView.findViewById(to[i]);tv.setText((String) data.get(position).get(from[i]));}}addListener(convertView,position);return convertView;}public void addListener(View convertView,int arg) {final int arg2=arg;((ImageView)convertView.findViewById(R.id.store_user)).setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Toast.makeText(context, "点击了第"+arg2+"项",Toast.LENGTH_SHORT).show();/* Intent intent = new Intent(myActivity.ma,A.class); myActivity.ma.startActivity(intent);*/}});}
然后在UserListActivity中改写如下,并将之前对ImageView的监听删掉
// 为联系人创建listitem适配器SimpleAdapter adapter = new MyAdapter(this, this.userdata,R.layout.userlist_item_layout, new String[] { "user_photo","user_name", "user_tel", "user_collect" }, new int[] {R.id.user_phote, R.id.user_name, R.id.user_tel,R.id.store_user });// 将listitem绑定到适配器上this.userlist = (ListView) findViewById(R.id.userlist);this.userlist.setAdapter(adapter);// 将listitem绑定到适配器监听器this.userlist.setOnItemClickListener(new AdapterOcl());
最后实现了我想要的结果,嘎嘎,挺费功夫,还好有小乔在身边帮忙,不然我是搞不定的
- 在ListView中实现对ImageView的监听
- listview里面imageview的监听
- ListView中Button的监听实现
- ListView中Button的监听实现
- ListView中Item控件监听及异步刷新的实现
- 对ListView滚动状态的监听
- 对ListView滚动状态的监听
- 关于对ListView getView完成的监听
- Android开发系列(十四):ListView用法、对ListView监听的三种方法以及ListView中Adapter的使用方法
- ImageView怎么从pist文件中加载png图片,并对ImageView进行监听
- Swt中实现对TitleAreaDialog窗口的关闭进行监听
- android中实现对多个EditText的监听
- android中实现对多个EditText的监听
- android中实现对多个EditText的监听
- 保持 EditText 的简洁 ——在 Android 中对你所有的 EditText 实现文本监听
- ListView中ImageView 点击显示在 Toast 上
- android中listView监听中获取监听到的内容
- Android fragment中如何对listview添加监听事件
- U盘安装debian 5
- TNS-12541 TNS-12560 TNS-00511 Linux Error: 111: Connection refused
- NYOJ99 单词拼接
- 创见内存卡修复工具带数据恢复RecoveRx Tool v2.0
- C程序中的长度为0 或者 为1的数组
- 在ListView中实现对ImageView的监听
- Hibernate实现实体对象延迟加载(转载)
- vim安装插件最简单的方法
- 如何让debian自动找到最快的更新源
- GDAL读写矢量文件——Python
- C#将人民币转换成大写金额
- Oracle 11G怎么确定PATCH要不要停机
- 为debian设置较快的更新源
- android jni 读写资源文件:assets