列表选择项目

时间:2016-02-08 15:11:59

标签: java android

我制作了一个包含多个项目的滚动列表。当我点击一个项目时,该项目背景的颜色会发生变化。

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"));
        }
    });
}
}

我遇到了问题。当我选择一个项目时,会自动选择其他项目。 我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

从您的代码中可以看出,在点击某个项目时,您将其背景设置为颜色DDFFFF,但是一旦“未选中”,您就永远不会将它们切换回原始颜色。你可以:

  • 跟踪唯一选定的项目,并在着色新项目之前将其切换回白色(如果您在任何时候只有1个选定的项目,则很好)

  • 点击所有人,然后为新的

  • 着色
  • 使用布尔值列表(活动/非活动)跟踪每个项目的状态,然后根据状态覆盖绘制循环颜色