如何使用BaseAdapter为onitemClickListener编写自定义列表视图的代码?

这是使用Android中的BaseAdapter自定义列表视图的代码,它的工作正常:

public class CustomListAdapter extends BaseAdapter { private ArrayList _listData; Context _c; public CustomListAdapter(Context context, ArrayList listData) { _listData = listData; _c = context; } @Override public int getCount() { return _listData.size(); } @Override public Object getItem(int position) { return _listData.get(position); } @Override public long getItemId(int position) { return position; } public View getView(int position,View convertView,ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = layoutInflator.inflate(R.layout.listview_row, null); } TextView titleText = (TextView)v.findViewById(R.id.holdTitleText); TextView catText = (TextView)v.findViewById(R.id.holdCatText); TextView descText = (TextView)v.findViewById(R.id.holdDescText); TextView dateText = (TextView)v.findViewById(R.id.holdDateText); //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.) TaskClass taskClassInstance = _listData.get(position); titleText.setText(taskClassInstance.getTitle()); catText.setText(taskClassInstance.getTaskCategory()); descText.setText(taskClassInstance.getDescription()); dateText.setText(taskClassInstance.getTaskDate()); return v; } } 

和活动im绑定listview与自定义适配器:

 listViewInstance.setAdapter(new CustomListAdapter(getApplicationContext(),taskClasslistInstance)); 

其中“taskclasslistinstance”是我的arraylist从数据库中收集数据它的工作正常现在我需要为listitemclick编写函数,这样当用户点击任何listitem我可以从数据库获得该listitem记录的rowid .so获得rowwid后我可以从中删除记录listview和db,可以编辑信息

好吧,我们不知道你的TaskClass ,但我希望你想要这样的东西:

 listViewInstance.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView parent, View view, int pos, long id) { TaskClass taskClass = taskClasslistInstance.get(pos); Log.d(TAG, "Clicked on: " + taskClass) // Do stuff with taskClass }}); 

这是我项目的一个小例子:

  list = (ListView) rootView.findViewById(R.id.list); adapter = new LazyAdapterAlbum(getActivity(), songs); list.setAdapter(adapter); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Intent i = new Intent(getActivity(), AlbumActivity.class); Bundle args = new Bundle(); args.putString(AlbumActivity.ALBUM_NAME, adapter.getItem(position).getName()); i.putExtras(args); startActivity(i); } }); 

您必须在ListView上设置onClickListener。

你也可以在getView方法中设置如下:

 public View getView(int position,View convertView,ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater layoutInflator = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = layoutInflator.inflate(R.layout.listview_row, null); } TextView titleText = (TextView)v.findViewById(R.id.holdTitleText); TextView catText = (TextView)v.findViewById(R.id.holdCatText); TextView descText = (TextView)v.findViewById(R.id.holdDescText); TextView dateText = (TextView)v.findViewById(R.id.holdDateText); //CheckBox checkBoxForEachItem = (CheckBox)v.findViewById(R.id.) TaskClass taskClassInstance = _listData.get(position); titleText.setText(taskClassInstance.getTitle()); catText.setText(taskClassInstance.getTaskCategory()); descText.setText(taskClassInstance.getDescription()); dateText.setText(taskClassInstance.getTaskDate()); v.setOnClickListener(new OnClickListener() { public void onClick(View v) { //Perform an action when this list item is clicked } }); return v; }