关于BaseAdapter中点击ListItem实例的有关问题
关于BaseAdapter中点击ListItem实例的问题
在看4.2.2apidemos中的代码时,在com.example.android.apis.view.List14中看到如下代码
想到有个问题是:如果我想单独给TextView写个OnClick方法,应该怎么取得这个View的实例呢?BaseAdapter中有什么方法能实现吗?
或者我能直接取得包裹text和icon的LinearLayout实例吗?这个实例在Activity中应该是个ListItem。
------解决方案--------------------
直接在getView这个函数里面操作,holder.text和holder.icon实例都已经有
在看4.2.2apidemos中的代码时,在com.example.android.apis.view.List14中看到如下代码
/**
* Make a view to hold each row.
*
* @see android.widget.ListAdapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
// A ViewHolder keeps references to children views to avoid unneccessary calls
// to findViewById() on each row.
ViewHolder holder;
// When convertView is not null, we can reuse it directly, there is no need
// to reinflate it. We only inflate a new View when the convertView supplied
// by ListView is null.
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
holder = (ViewHolder) convertView.getTag();
}
// Bind the data efficiently with the holder.
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
static class ViewHolder {
TextView text;
ImageView icon;
}
想到有个问题是:如果我想单独给TextView写个OnClick方法,应该怎么取得这个View的实例呢?BaseAdapter中有什么方法能实现吗?
或者我能直接取得包裹text和icon的LinearLayout实例吗?这个实例在Activity中应该是个ListItem。
listview
------解决方案--------------------
直接在getView这个函数里面操作,holder.text和holder.icon实例都已经有
final ImageView iconView = holder.icon;
holder.text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
iconView.setImageResource(R.drawable.xxxxx);