今天小陌讲的就是怎么在listview中自动刷新数据,其实就是调用adpter的notifyDataSetChanged();
话不多说先上图:
好了下面是代码:
public class MyAdapter extends BaseAdapter {
Context mcontext;
ArrayList<String> arrayList;
LayoutInflater inflater;
public MyAdapter(Context context, ArrayList<String> list) {
this.mcontext = context;
this.arrayList = list;
inflater = LayoutInflater.from(mcontext);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrayList.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.item, null);
holder.button = (Button) convertView.findViewById(R.id.button);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
arrayList.remove(getItem(position));
notifyDataSetChanged();
}
});
String s = getItem(position);
holder.button.setText(s);
return convertView;
}
class ViewHolder {
Button button;
}
}
这是Activity:
public class MainActivity extends Activity {
ArrayList<String> list;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lv);
listView.setAdapter(new MyAdapter(this, initData()));
}
private ArrayList<String> initData() {
// TODO Auto-generated method stub
list = new ArrayList<String>();
for (int i = 0; i <20; i++) {
list.add("BUTTON " + i);
}
return list;
}
}