我使用listview。我写了自定义适配器。我在listview项目选择时更改了背景颜色。但滚动时我没有按住选定的位置。请帮帮我
谢谢。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setBackgroundColor(color);
}
});
class OrderSummaryAdapter extends AppBaseAdapter{
private ViewHolder holder;
public OrderSummaryAdapter(Context context, List<OrderItem> item) {
super(context, item);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.example_layout, parent, false);
holder.text = (TextView) convertView.findViewById(R.id.eat_name);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText("text");
return convertView;
}
class ViewHolder{
TextView text;
}
}
答案 0 :(得分:0)
像这样使用onclick listener
final int selectedposition=0;
mListView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(
AdapterView<?> parent, View view,int position, long id)
{
selectedposition=position;
}
@Override
public void onNothingSelected(
AdapterView<?> parent) {
// TODO Auto-generated method
}
});
答案 1 :(得分:0)
您必须在处理notifyDataSetChanged();
的主要课程中致电list.setOnItemClickListener
。像这样添加:
adapter.notifyDataSetChanged();
这是因为视图每次失焦时都会被回收,并且会创建新视图,以便保留您调用此方法所需的值。
答案 2 :(得分:0)
试试这个:我知道它是否有效:)
您可以跟踪当前所选元素的位置:
OnItemClickListener listViewOnItemClick = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) {
mSelectedItem = position;
mAdapter.notifyDataSetChanged();
}
};
并覆盖适配器的getView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View view = View.inflate(context, R.layout.item_list, null);
if (position == mSelectedItem) {
// set your color
}
return view;
}
答案 3 :(得分:-1)
对于所选行的设置背景颜色,您可以使用模型类OrderItem。为此,您只需要在模型类中使用bool变量,并且每当您单击列表项时,只需更改bool变量的值并调用notifydatachange函数并在适配器的getView函数内设置视图颜色。 这将解决您的问题。