Android开发之初级开发_适配器之BaseAdapter刷新列表数据
MainActivity.java
import android.os.Bundle; import android.app.ListActivity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ListActivity implements OnClickListener { private MyListAdapter<String> adapter; private int index = 0; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adapter = new MyListAdapter<String>(this, android.R.layout.simple_list_item_1) { protected void initlistcell(int position, View listcell, ViewGroup parent) { ((TextView) (listcell)).setText(getItem(position)); } }; setListAdapter(adapter); for (index = 1; index < 6; index++) { adapter.add("love you" + index); } findViewById(R.id.btn_add).setOnClickListener(this); findViewById(R.id.btn_remove).setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_add: index++; adapter.add("love you" + index); break; case R.id.btn_remove: if (adapter.getCount() < 1) { Toast.makeText(this, "没有可以移除的项", 0).show(); } else { adapter.removelast(); } break; } } }
MyListAdapter.java
import java.util.ArrayList; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public abstract class MyListAdapter<T> extends BaseAdapter { // 定义一个泛型的集合 private List<T> list = new ArrayList<T>(); private Context context; private int listcellid; // 添加一个构造方法 public MyListAdapter(Context context, int resId) { this.context = context; listcellid = resId; } public Context getContext() { return context; } // 添加一项 public void add(T item) { list.add(item); // 告诉系统界面数据发生变化,刷新界面 notifyDataSetChanged(); } // 移除一项 public void remove(int position) { list.remove(position); // 告诉系统界面数据发生变化,刷新界面 notifyDataSetChanged(); } // 移除最后一项 public void removelast() { remove(getCount() - 1); } // 获取list总数 public int getCount() { return list.size(); } public T getItem(int position) { return list.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(listcellid, null); } initlistcell(position, convertView, parent); return convertView; } // 定义一个抽象方法,用于初始化listcell // 抽象方法不需要实现具体方法实现 protected abstract void initlistcell(int position, View convertView, ViewGroup parent); }
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="添加" /> <Button android:id="@+id/btn_remove" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="移除" /> </LinearLayout> </LinearLayout>

浙公网安备 33010602011771号