我自己经过测试的 包含 button 的 listView
2011-06-25 22:16
375 查看
package gyf.android; import gyf.function.MyAdapter1; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.Toast; public class g1 extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); ListView listView=(ListView)findViewById(android.R.id.list); ArrayList<Map<String, Object>> dataList=new ArrayList<Map<String,Object>>(); for (int i = 0; i <6; i++) { Map<String, Object> map=new HashMap<String, Object>(); map.put("username", "gyf"); //map.put("changeButton", "change"); dataList.add(map); } // 生成适配器的Item和动态数组对应的元素 MyAdapter1 listItemAdapter = new MyAdapter1( this, dataList,//数据源 R.layout.main,//ListItem的XML实现 //动态数组与ImageItem对应的子项 new String[] {"username"}, //ImageItem的XML文件里面的一个ImageView,两个TextView ID new int[] {R.id.g1_textView1} ); listView.setAdapter(listItemAdapter); } protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); l.getItemAtPosition(position); Toast.makeText(g1.this, "hello", Toast.LENGTH_SHORT).show(); } }
定义的适配器类
package gyf.function; import gyf.android.R; import gyf.android.g1; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MyAdapter1 extends BaseAdapter { private class buttonViewHolder { TextView appName; Button buttonClose; } ArrayList<Map<String, Object>> alist; LayoutInflater lInflater; buttonViewHolder bHolder; Context context; String[] strings; int[] i; public MyAdapter1(Context c,ArrayList<Map<String, Object>> AlList,int resouse,String[] from,int[] to){ context=c; alist=AlList; lInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); strings=new String[from.length]; i=new int[to.length]; System.arraycopy(from, 0, strings, 0, from.length); System.arraycopy(to, 0, i, 0, to.length); } @Override public int getCount() { // TODO Auto-generated method stub return alist.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return alist.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) { // TODO Auto-generated method stub if (convertView != null) { bHolder = (buttonViewHolder) convertView.getTag(); } else { convertView = lInflater.inflate(R.layout.main, null); bHolder = new buttonViewHolder(); bHolder.appName = (TextView)convertView.findViewById(i[0]); bHolder.buttonClose = (Button)convertView.findViewById(R.id.g1_button1); convertView.setTag(bHolder); } HashMap<String, Object> appInfo = (HashMap<String, Object>)alist.get(position); if (appInfo != null) { String aname = (String) appInfo.get(strings[0]); // String buString = (String)appInfo.get(strings[1]); bHolder.appName.setText(aname); // bHolder.buttonClose.setText(buString); bHolder.buttonClose.setOnClickListener(new lvButtonListener(position)); } return convertView; } class lvButtonListener implements OnClickListener { private int position; lvButtonListener(int pos) { position = pos; } @Override public void onClick(View v) { int vid=v.getId(); if (vid == bHolder.buttonClose.getId()){ //alist.remove(position); alist.get(position).put(strings[0], "111"); MyAdapter1.this.notifyDataSetChanged(); //bHolder.appName.setText("lyx"); Toast.makeText(context, "world"+position, Toast.LENGTH_SHORT).show(); } } } }
界面布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
item布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:descendantFocusability="blocksDescendants"> <TextView android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:text="@string/g1" android:gravity="center" android:id="@+id/g1_textView1"></TextView> <Button android:layout_height="wrap_content" android:text="Button" android:layout_width="wrap_content" android:layout_weight="1" android:focusable="false" android:id="@+id/g1_button1"></Button> </LinearLayout>
相关文章推荐
- ListView 包含Button 的事件问题
- ListView 包含Button 的事件问题
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- ListView 包含Button 的事件问题
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- 关于listView的item失去焦点不能点击 Item中包含Button 导致抢占焦点
- ListView子项中包含Button按钮监听混乱的解决办法
- android ListView的Item中包含Button,CheckBox等可点击view的处理
- listview 的item 中包含 button
- ListView 包含Button 的事件问题
- 解决ListView的Item包含Button的点击冲突事件
- 关于ListView的item中包含Button或Checkbox时导致item无法点击问题
- ListView中包含Button
- ListView中包含Button情况下焦点事件的获取
- ListView中包含Button时候,怎么获取listView的onItemClick事件,2015-8-10
- ListView的Item中包含Button等导致setOnItemClickListener失效的问题
- Android下listview每个Item中包含有按钮,为什么在点击某一行按钮的时候,同时有多行button触发了响应事件?
- Listview嵌套ListView 及包含button onItemClic失效问题
- ListView包含Button,导致ListView itemclick无效的问题
- Windows下搭建PHP开发环境 (经过测试可以用)