gpt4 book ai didi

android - 如何在代码中选择 ListView 中的第一项(使用 baseadapter)以更改其背景

转载 作者:行者123 更新时间:2023-11-29 18:03:21 28 4
gpt4 key购买 nike

我有一个带有基本适配器的菜单 ListView 。

我的 Activity :

listView_menu = (ListView) findViewById(R.id.listView_menu);
model_category = new Model_Category(context);
listView_menu.setAdapter(new BaseAdapter_Menu(context, model_category.GetAllDifferentCategory()));
listView_menu.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3)
{
view.setSelected(true);
}
});
listView_menu.setSelection(0);

我的 BaseAdapter_Menu 的 getView 方法(扩展了 BaseAdapter):

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;

if (rowView == null)
{
rowView = this.inflater.inflate(R.layout.customitemlistview_menu, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.category = (TextView) rowView.findViewById(R.id.category_menu);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder)rowView.getTag();
holder.category.setText(this.data.get(position));
return (rowView);
}

每个项目都有一个背景选择器,根据其状态(已选择或未选择)有 2 个不同的背景。

当我点击我的 ListView 中的一个项目时,我设置了我的 View item.setSelected("true")

因此,当我单击时,该项目的背景会发生变化,但是如何在不单击它的情况下更改我的 ListView 的第一个项目的背景。我已经尝试过“listView_menu.setSelection(0)”,但它不起作用。

最佳答案

我找到了解决方案! :)

在我的 onCreate 中,我应用了这段代码:

listView_menu.setAdapter(new BaseAdapter_Menu(context, model_category.GetAllDifferentCategory()));
listView_menu.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> listView, View view, int position, long id)
{
((BaseAdapter_Menu) listView_menu.getAdapter()).setPositionSelected(position);
}
});

在我的 BaseAdater_Menu 中:

我创建 private int PositionSelected = 0;

我添加这个方法

public void setPositionSelected(int position)
{
PositionSelected = position;
this.notifyDataSetChanged();
}

然后我覆盖了 getView 方法

public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;

if (rowView == null)
{
rowView = this.inflater.inflate(R.layout.customitemlistview_menu, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.category = (TextView) rowView.findViewById(R.id.category_menu);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder)rowView.getTag();
holder.category.setText(this.data.get(position));
if (position == PositionSelected)
rowView.setBackgroundResource(R.drawable.item_menu_selected_background);
else
rowView.setBackgroundResource(R.drawable.item_menu_background);
return (rowView);
}

谢谢你的帮助:)

关于android - 如何在代码中选择 ListView 中的第一项(使用 baseadapter)以更改其背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com