我制作了一个包含多个项目的滚动列表。当我点击一个项目时,该项目背景的颜色会发生变化。
public class MyList extends Activity {
PackageManager packMan;
public static ArrayList<ItemList> list;
private ArrayAdapter<ItemList> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.items);
init();
create();
addClickListener();
}
public void init(){
if(list==null) {
list = new ArrayList<ItemList>();
packMan = getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory("com.example.example");
List<ResolveInfo> items = packMan.queryIntentActivities(i, 0);
for (ResolveInfo ri : items) {
ItemList item = new ItemList();
item.addName((String) ri.loadLabel(packMan));
item.addNamePackage(ri.activityInfo.name);
item.addIcon(ri.activityInfo.loadIcon(packMan));
list.add(item);
}
}
}
private void create(){
v = (ListView)findViewById(R.id.list);
adapter = new ArrayAdapter<ItemList>(this, R.layout.items, list) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.items, null);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
icon.setImageDrawable(list.get(position).getIcon());
TextView name = (TextView) convertView.findViewById(R.id.name);
name.setText(list.get(position).getName());
}
return convertView;
}
};
v.setAdapter(adapter);
}
private void addClickListener(){
v.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int pos, long id) {
av.getChildAt(pos).setBackgroundColor(Color.parseColor("#DDFFFF"));
}
});
}
}
我遇到了问题。当我选择一个项目时,会自动选择其他项目。 我该如何解决这个问题?感谢。
答案 0 :(得分:0)
从您的代码中可以看出,在点击某个项目时,您将其背景设置为颜色DDFFFF,但是一旦“未选中”,您就永远不会将它们切换回原始颜色。你可以:
跟踪唯一选定的项目,并在着色新项目之前将其切换回白色(如果您在任何时候只有1个选定的项目,则很好)
点击所有人,然后为新的
使用布尔值列表(活动/非活动)跟踪每个项目的状态,然后根据状态覆盖绘制循环颜色