在 onListItemClick 我想改变点击的项目背景,这是我的代码:
public void onListItemClick(ListView parent, View v, int position, long id){
if (position != previous_position){
v.setBackgroundResource(R.drawable.category_clicked_item_bg);
if (previous_category != null)
previous_category.setBackgroundResource(R.drawable.category_item_bg);
previous_category = v;
previous_position = position;
}
}
previous_category 和 previous_position 是受保护的变量。
问题是,在项目单击列表中的多个项目被突出显示(更具体地说是 1 或 2)。在列表中有 20 行,如果我点击中间的一行,只有一个会突出显示,如果我点击开头或结尾的任何一行,另一侧的另一行会以间隔 13 行突出显示(这可能是为什么按中间行不要'不要突出第二个)。
我需要列表仅突出显示单击的一行,有什么问题?
附加代码
如果这有帮助,这里还有 ListView 适配器类:
package domehotel.guestbook.page.category;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import domehotel.guestbook.R;
public class CategoryAdapter extends ArrayAdapter<CategoryItem>{
Context context;
int layoutResourceId;
CategoryItem data[] = null;
public CategoryAdapter(Context context, int layoutResourceId, CategoryItem[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
CategoryHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CategoryHolder();
holder.category_name = (TextView)row.findViewById(R.id.category_name);
row.setTag(holder);
}
else
{
holder = (CategoryHolder)row.getTag();
}
CategoryItem category = data[position];
holder.category_name.setText(category.category_name);
return row;
}
static class CategoryHolder
{
TextView category_name;
}
}