Android:ListView BaseAdapter

来源:互联网 发布:ubuntu怎么下载软件 编辑:程序博客网 时间:2024/05/08 00:16

Password.java

package com.example.shejike;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;public class PasswordActivity extends Activity {private ListView lv;private ArrayList<HashMap<String, String>> list;private LVbaseadapter lvbaseadapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.password);list = new ArrayList<HashMap<String, String>>();for (int i = 0; i < 10; i++) {HashMap<String, String> hm = new HashMap<String, String>();hm.put("tv1", "tv1" + i);hm.put("tv2", "tv2" + i);list.add(hm);}lvbaseadapter = new LVbaseadapter(this, list);lv = (ListView) findViewById(R.id.lV1);lv.setAdapter(lvbaseadapter);}/** *  * 继承BaseAdapter 后可以实现单个item中的子组件的单独事件,例如点击事件 *  */class LVbaseadapter extends BaseAdapter {private LayoutInflater layoutInflater;private Holder holder;private ArrayList<HashMap<String, String>> list;public LVbaseadapter(Context context,ArrayList<HashMap<String, String>> list) {this.layoutInflater = LayoutInflater.from(context);this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int arg0) {return list.get(arg0);}@Overridepublic long getItemId(int arg0) {return arg0;}public void removeItem(int position) {list.remove(position);// 适配器数据已经发生变化,通知listview及时更新。this.notifyDataSetChanged();}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {if (arg1 == null) {holder = new Holder();arg1 = layoutInflater.inflate(R.layout.line, null);holder.tv1 = (TextView) arg1.findViewById(R.id.tv1);holder.tv2 = (TextView) arg1.findViewById(R.id.tv2);arg1.setTag(holder);} else {holder = (Holder) arg1.getTag();}holder.tv1.setText(list.get(arg0).get("tv1").toString());holder.tv2.setText(list.get(arg0).get("tv2").toString());holder.tv1.setOnClickListener(new MyClick(arg0));holder.tv2.setOnClickListener(new MyClick(arg0));return arg1;}}class Holder {public TextView tv1, tv2;}class MyClick implements OnClickListener {private int position;MyClick(int position) {this.position = position;}@Overridepublic void onClick(View v) {if (R.id.tv1 == v.getId()) {lvbaseadapter.removeItem(position);Log.i("tv1", "tv1 ---------------" + position);} else if (R.id.tv2 == v.getId()) {Log.i("tv2", "tv2 ---------------" + position);} else {Log.i("tv", "other ---------------" + position);}}}}

password.java

<?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:background="@drawable/background"     >    <ListView        android:id="@+id/lV1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="1" >    </ListView>    </LinearLayout>

line.xml

<?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="vertical" >    <TextView        android:id="@+id/tv1"        android:layout_width="120dp"        android:layout_height="wrap_content"        android:background="#00aa00"        android:text="TextView" />    <TextView        android:id="@+id/tv2"        android:layout_width="100dp"        android:layout_height="wrap_content"        android:background="#0000aa"        android:text="TextView" /></LinearLayout>