0

2 つの要素を持つ ListView があります。選択したアイテムに基づいて異なるコードを実行したいと思います。今まで私のコードは次のようになっています (しかし、動作していません):

protected void onListItemClick(ListView l, View v, int position, long id) {
     // TODO Auto-generated method stub
        ListView listview = (ListView) findViewById(android.R.id.list);
        View root = (View) listview.getParent();
        if (position == 1) {
            root.setBackgroundColor(Color.parseColor("#133b96"));
        } else if (position == 2) {
            root.setBackgroundColor(Color.parseColor("#bdbdbd"));
        }
    }

背景色を変更したいのですが、色は選択したアイテムに基づいている必要があります。

これを行う最も簡単な方法は何ですか?

4

3 に答える 3

4
protected void onListItemClick(ListView l, View v, int position, long id) {

    if (position == 1) {
        v.setBackgroundColor(Color.parseColor("#133b96"));
    } else if (position == 2) {
        v.setBackgroundColor(Color.parseColor("#bdbdbd"));
    }
}

protected void onListItemClick()parameters のメソッドを見てくださいView v。選択されたリスト項目のビューです。ListView の背景色を変更したい場合は、

ListView l.

何かのようなもの、

if (position == 1) {
        l.setBackgroundColor(Color.parseColor("#133b96"));
    } else if (position == 2) {
        l.setBackgroundColor(Color.parseColor("#bdbdbd"));
}

したがって、それを機能させるには、追加のコードを削除する必要があります。

于 2013-01-10T16:05:50.490 に答える
0

ポジションを切り替えることができます。より OOP のアプローチは、ビューのタグ プロパティを使用し、それを使用して実行可能なものを保存することです。

例えば

item.setTag(new Runnable() {
    public void run() {
        // run whatever code you want
    }
}

...

((Runnable)view.getTag()).run();
于 2013-01-10T16:07:22.790 に答える
0
   ArrayAdapter<MyClass> adapter= new ArrayAdapter<MyClass>(this, R.layout.lay_item, theObjects);
   myList.setAdapter(adapter);
   myList.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    MyClass item = (MyClass) adapter.getItem(position);
   }
  }
于 2013-01-10T16:07:54.057 に答える