要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中
要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法
以下为实现的一个实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
package com.jason.joysmsyd;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SendMain extends ListActivity implements OnClickListener{
Button buttonMessage,buttonContact,buttonHistory;
EditText textMessage;
List<Map<String,String>> contacts = new ArrayList<Map<String,String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.layout_send);
buttonMessage = (Button) this.findViewById(R.id.ButtonMessage);
buttonContact = (Button) this.findViewById(R.id.ButtonContact);
buttonHistory = (Button) this.findViewById(R.id.ButtonHistory);
textMessage = (EditText)this.findViewById(R.id.EditTextMessage);
textMessage.setText(this.getIntent().getExtras().getString("message"));
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.ButtonMessage:
this.finish();
break;
case R.id.ButtonContact:
{
Intent intent = new Intent();
intent.setAction("com.jason.action.contact");
this.startActivityForResult(intent, 0);
}
break;
case R.id.ButtonHistory:
{
Intent intent = new Intent();
intent.setAction("com.jason.action.history");
this.startActivityForResult(intent, 1);
}
break;
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK) {
this.getcontactFromString(data.getExtras().getString(
UserSelectActivity.RETURN_LIST));
bindDataToList();
}
}
private void getcontactFromString(String data) {
if (data == null || data.length() == 0) {
return;
}
String[] arrayContact = data.split("#");
for (String singleContact : arrayContact) {
if (singleContact != null && singleContact.length() > 0) {
String[] props = singleContact.split(":");
if (props.length == 2) {
Map<String,String> contact = new HashMap<String,String>();
contact.put("name", props[0]);
contact.put("phone", props[1]);
contacts.add(contact);
}
}
}
}
private void bindDataToList(){
this.setListAdapter(new MyAdapter());
}
public class MyAdapter extends BaseAdapter{
public int getCount() {
// TODO Auto-generated method stub
return contacts.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return contacts.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = SendMain.this.getLayoutInflater();
final View view = inflater.inflate(R.layout.layout_user_item, null);
final TextView textPhone = (TextView) view.findViewById(R.id.text1);
final TextView textName = (TextView) view.findViewById(R.id.text2);
Button button = (Button)view.findViewById(R.id.buttonDelete);
textPhone.setText(contacts.get(position).get("phone"));
textName.setText(contacts.get(position).get("name"));
button.setTag( position);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
int position = Integer.parseInt(v.getTag().toString());
contacts.remove(position);
MyAdapter.this.notifyDataSetChanged();
// SendMain.this.getListView().refreshDrawableState();
}});
return view;
}
}
}
|
原文链接:http://www.cnblogs.com/qzxia/archive/2010/11/29/1890959.html
转载地址:http://disanji.net/2010/12/22/android-listview-itemview/
分享到:
相关推荐
Android中ListView动态添加删除项
Android ListView每个Item上面的有TextView和Button,为ListView每个Item上面的按钮添加事件,并获取TextView文本信息。
C# 下重载ListView 添加按钮列
android studio实现listview的增加,左滑删除 listview以表格样式实现
困扰了我好久,今天终于把它解决了。 需求是点击添加按钮,ListView增加一个Item,Item里面有一个按钮和一个EditText,点击按钮删除此item。
在实际开发中,很多项目都用到了,listView添加头部的写法,疫情我以为很难,最近偶然发现很简单,所以下了一个例子和大家交流
动态添加、移除ListView的itemView!非常流畅哦
在Android的ListView中动态添加数据
在listview中添加按钮,并监听相应事件,可以加上自己的方法。
listview动态添加删除itemView,从上往下添加,从下往上添加,定时item自动消失,itemView长度设置等
实现了ListView添加图片、按钮并添加了ListView跟Button 的双监听,Button实现的是Activity的跳转
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...
listview实现动态加载数据,值得学习
里要分享的是在一个listview中添加两个点击事件的解决办法,效果就像android qq的好友列表中,点击一个好友,会进入聊天界面,点击后面的图标,就会进入好友详细信息界面。这样的好处就是既不去掉ListView的...
本篇文章主要介绍了android为ListView每个Item上面的按钮添加事件,有兴趣的同学可以了解一下。
Android中ListView用NotifyDataSetChanged实现添加数据时动态刷新
Android ListView添加两个Button焦点获取 listview 放弃焦点 让Button获取焦点 很简单的一个demo 点击相应 我没弄 也很简单 焦点都给你获取了 点击都不会做 我也没办法了 百度了这么久 自己写了个 希望能帮到大家
C#的ListView添加各种自定义控件,CheckBox,ComboBox等
Android里ListView里面添加CheckBox实现多选,用上ViewHolder和ConvertView
【android开发】仿QQ中ListView中选项左滑出现删除按钮,点击删除选项