gpt4 book ai didi

android - 有谁知道如何突出显示 Android listView 中的选定项目?

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:29 25 4
gpt4 key购买 nike

我正在尝试创建一个 ListView ,在该 ListView 中,点击某个项目时背景会改变颜色。到目前为止,我当前的实现导致“相反”的可见单元格的背景发生了变化。例如,如果我选择列表中的顶部项目,则底部项目会突出显示。谁能帮我实现所需的功能?

我的列表 Activity :

        public void onCreate(Bundle savedInstanceState) {

Log.e(TAG, "Starting Symptom Activity...");
super.onCreate(savedInstanceState);


setContentView(R.layout.symptom_listview);
// Setup list
this.setupSymptomScreen();
startManagingCursor(cs);
//get handle on buttons
Button nextButton = (Button) findViewById(R.id.symptom_next);
Button backButton = (Button) findViewById(R.id.symptom_goBack);
ListView lv =getListView();

lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setItemsCanFocus(false);

SymptomAdapter adapter = new SymptomAdapter(this,
R.layout.symptom_item, cs, new String[] { DbAdapter.KEY_SYMPTOM },
new int[] { R.id.txt_symptom });

selectedItems = new HashSet<String>();
adapter.setLookupTable(selectedItems);
setListAdapter(adapter);



lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(!selectedItems.contains(view.toString()))
{
view.setBackgroundColor(Color.CYAN);
String symptom = ((TextView) view.findViewById(R.id.txt_symptom)).getText().toString();
selectedItems.add(symptom);

}
else
{
view.setBackgroundColor(Color.WHITE);
selectedItems.remove(view.toString());
}


}
});
nextButton.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// import selected items into a list
importSelected();
// figure out category
process();
}
});
//List for symptom ids
symptoms_id = new ArrayList<Integer>(cs.getCount());

}

而且我还制作了自己的适配器,其中覆盖了 getView

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

if(convertView != null){
String symptoms = ((TextView) convertView.findViewById(R.id.txt_symptom)).getText().toString();
if(!selectedItems.contains(symptoms))
convertView.setBackgroundColor(Color.WHITE);
}

return super.getView(position, convertView, parent);
}

最佳答案

这是一个例子:

private class ItemAdapter extends SimpleAdapter {

private int mItemIndex = -1;

public ItemAdapter(Context context,
List<? extends Map<String, ?>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
}

/* (non-Javadoc)
* @see android.widget.SimpleAdapter#getView(int, android.view.View, android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = super.getView(position, convertView, parent);
if (position == mItemIndex) {
convertView.setSelected(true);
convertView.setPressed(true);
convertView.setBackgroundColor(Color.parseColor("#FF9912"));
}

return view;
}

public void setSelectItem(int index) {
mItemIndex = index;
}

public int getSelectItem() {
return mItemIndex;
}

}

当您选择一个项目时,onItemClick 函数如下所示:

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
((ItemAdapter)list.getAdapter()).setSelectItem(arg2);
}

关于android - 有谁知道如何突出显示 Android listView 中的选定项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972155/

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