ListView中的行和行中item的点击监听事件
这里layout中的list_item.xml定义了三个组件,两个文本框一个按钮。实现点击按钮可输出其中一个文本框的内容
ListView的适配器定义
public class RealListAdapter extends BaseAdapter {
public static int mWidthest = 0;
private LayoutInflater mInflater;
private Context mContext;
private List listMap;
public final class ListItemView{
public TextView mId;
public TextView mCategory;
public Button mLocationChage;
}
public RealListAdapter(Context context, List listMap) {
this.mContext = context;
this.mInflater = LayoutInflater.from(context);
this.listMap = listMap;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listMap.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ListItemView listItemView = null;
if (convertView == null) {
listItemView = new ListItemView();
convertView = mInflater.inflate(layout.list_item, null);
listItemView.mId = (TextView)convertView.findViewById(R.id.id_text);
listItemView.mCategory = (TextView)convertView.findViewById(R.id.category_text);
listItemView.mLocationChage = (Button)convertView.findViewById(id.loction_chage);
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}
InventoryTagMap map = listMap.get(position);
//新数据填充
listItemView.mId.setText(String.valueOf(position + 1));
listItemView.mCategory.setText(map.mcategory);
//listview中item添加点击按钮
listItemView.mLocationChage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InventoryTagMap map = listMap.get(position);
mOnItemChangeListener.onChangeClick(map.mcategory);
}
});
return convertView;
}
//变更按钮的监听接口
public interface onItemChangeListener {
void onChangeClick(String mcategory);
}
private onItemChangeListener mOnItemChangeListener;
public void setOnItemChangeClickListener(onItemChangeListener mOnItemChangeListener) {
this.mOnItemChangeListener = mOnItemChangeListener;
}
MainActivity中调用
定义
private ListView mTagRealList;
private RealListAdapter mRealListAdapter;
调用
mTagRealList = (ListView) findViewById(R.id.list_view);
mRealListAdapter = new RealListAdapter(this, myList);
mTagRealList.setAdapter(mRealListAdapter);
//ListView中行的点击事件
mTagRealList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (mOnItemSelectedListener != null)
mOnItemSelectedListener.onItemSelected(arg1, arg2, arg3);
Toast.makeText(this,"已点",Toast.LENGTH_SHORT).show();
}
});
//ListView item 中的按钮点击事件
mRealListAdapter.setOnItemChangeClickListener(new RealListAdapter.onItemChangeListener() {
@Override
public void onChangeClick(String mcategory) {
final String nowcategory =mcategoryC;
Toast.makeText(this,"以获取"+nowcategory,Toast.LENGTH_SHORT).show();
}
});