巧用“匿名內部類”獲取自定義適配器裏控件的焦點

昨天在論壇裏看到一個人問了如題這個問題,剛好以前我也遇到過這個問題,仔細想了一下,大概有兩種解決的方法分享給大家。

思路一 就是在getView的方法裏怎麼把參數position的值傳給你所需要的方法體裏。比如說適配器裏放的是TextView和button,現在想單擊button的

時候,用Toast給動態顯示出來。那隻要在getView裏找到button後,然後給button註冊一個自己自定義的適配器,把position當做參數送進去,就OK了。


public class MyOrder_ListViewAdapter extends SimpleAdapter {
	private Context mcontext;
	private LayoutInflater mInflater;
	public List<HashMap<String, Object>> list;
	private int layoutID;
	private String flag[];
	private int ItemIDs[];
	private List<Order> orderlists;
	Button mymenu_add_button;
	Button mymenu_delete_button;
	private Handler handler;

	public MyOrder_ListViewAdapter(Context context,
			List<? extends Map<String, ?>> list2, int resource, String[] from,
			int[] to, List<Order> orderlists, Handler handler) {
		super(context, list2, resource, from, to);
		mInflater = LayoutInflater.from(context);
		list = (List<HashMap<String, Object>>) list2;
		layoutID = resource;
		flag = from;
		ItemIDs = to;
		mcontext = context;
		this.orderlists = orderlists;
		this.handler=handler;
		// TODO Auto-generated constructor stub
	}

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

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

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

	public View getView(int position, View convertView, ViewGroup parent) {
		convertView = mInflater.inflate(R.layout.mymenu_list_item, null);
		mymenu_add_button= (Button) convertView.findViewById(R.id.mymenu_add_btn);
		mymenu_add_button.setOnClickListener(new myButtonListener(position));
		return convertView;
	}
	
	class myButtonListener implements OnClickListener {
		private int position;
		GridViewButtonListener(int pos) {
			position = pos;
		}
		public void onClick(View v) {		
			String dishnamegot = (String) ((HashMap<String, Object>) getItem(position))
					.get("TextViewd的key名");					
		}				
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章