`
yidongkaifa
  • 浏览: 4062960 次
文章分类
社区版块
存档分类
最新评论

android开发--详解ListView,动态添加,删除Adapter中的数据项

 
阅读更多

ListView是Android开发中最常用到的控件之一,所以学习ListView显得非常重要,在本文中,作者继承了BaseAdapter实现了自己的Adapter,在其中实现相应的方法,包括添加,删除,清空list。

除此之外,作者实现了listview的两个方法,即当用户选择某一项和用户点击某一项发生的相关事件,下图即为此程序的截图:


一下是具体的实现源代码:

public class ListView_Activity extends Activity {
	private Button button1;
	private Button button2;
	private Button button3;
	private ListView listView;
	private String[] data={"二次曝光","十二生肖","血滴子","大上海","人在囧途","泰囧","新少林寺","大魔术师","哆啦a梦"};
	MyAdapter myAdapter =new MyAdapter(ListView_Activity.this);
	private static int counter=0;
	private TextView textView;
	private TextView textView2;
	private TextView textView3;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_list_view_);
		listView=(ListView)findViewById(R.id.listview);
		listView.setAdapter(myAdapter);
		button1=(Button)findViewById(R.id.buttonadd);
		button2=(Button)findViewById(R.id.buttondelete);
		button3=(Button)findViewById(R.id.buttonclear);
		button1.setOnClickListener(new MyButton());
		button2.setOnClickListener(new MyButton());
		button3.setOnClickListener(new MyButton());
		textView=(TextView)findViewById(R.id.textview);
		textView2=(TextView)findViewById(R.id.textviewselect);
		textView3=(TextView)findViewById(R.id.textviewclick);
		listView.setOnItemSelectedListener(new ListView.OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				//由于是键盘向下键选择某一个View,所以焦点聚焦到那一个View,所以采用此方法返回结果
				textView2.setText(arg0.getSelectedItem().toString());
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
		listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				//由于这是用户的点击事件,所以由此可以确定点击的那个位置(arg2),所以采用此方法返回结果
				textView3.setText(data[arg2]);
			}
		});
	}
	class MyButton implements OnClickListener{
	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		switch (view.getId()) {
		case R.id.buttonadd:
			if(counter<data.length){
				myAdapter.addText(data[counter]);
			}
			textView.setText(counter+"");
			break;
		case R.id.buttondelete:
			myAdapter.remove(--counter);
			textView.setText(counter+"");
			break;
		case R.id.buttonclear:
			myAdapter.removeAll();
			textView.setText(counter+"");
			break;
		default:
			break;
		}
	}
	}
	
	class MyAdapter extends BaseAdapter{
		private Context context;
		private List<String> textList=new ArrayList<String>();
		
		public MyAdapter(Context context) {
			this.context=context;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return textList.size();
		}

		@Override
		public Object getItem(int arg0) {
			// TODO Auto-generated method stub
			return textList.get(arg0);
		}

		@Override
		public long getItemId(int arg0) {
			// TODO Auto-generated method stub
			return arg0;
		}

		@Override
		public View getView(int arg0, View arg1, ViewGroup arg2) {
			// TODO Auto-generated method stub
			String inflater=Context.LAYOUT_INFLATER_SERVICE;
			LayoutInflater layoutInflater=(LayoutInflater)context.getSystemService(inflater);
			LinearLayout linearLayout=null;
			linearLayout=(LinearLayout)layoutInflater.inflate(R.layout.text2,null);
			TextView textView=(TextView)linearLayout.findViewById(R.id.text);
			textView.setText(String.valueOf(textList.get(arg0)));
			return linearLayout;
		}
		public void addText(String text){
			if (counter<=data.length-1) {
				textList.add(text);
				counter++;
			}
			else {
				Toast.makeText(ListView_Activity.this, "列表中已经显示了所有的项目!!!", Toast.LENGTH_LONG).show();
			}
			notifyDataSetChanged();
		}
		public void remove(int index) {
			if(index<0){
				Toast.makeText(ListView_Activity.this, "列表中并没有结果!!!", Toast.LENGTH_LONG).show();
				counter=0;
				return;
			}
			else {
				textList.remove(index);
			}
			notifyDataSetChanged();
		}
		public void removeAll(){
			textList.clear();
			counter=0;
			notifyDataSetChanged();
		}
		
	}

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics