簡體   English   中英

ListView OnClickItems 更改 Android 中的項目顏色

[英]ListView OnClickItems change item color in Android

我是 android 工作室的初學者。 如果我再次單擊列表視圖上的選定項目,我想知道如何更改顏色,假設我單擊第一個項目,它會將背景變為紅色,並且它將與其他項目保持相同但是我的問題是當我單擊再次將紅色項目更改為藍色。 下面是我的示例代碼,當我單擊我不知道將其更改為藍色的項目時,它僅保持顏色。 提前致謝。

在此處輸入圖像描述

public class MainActivity extends AppCompatActivity {
ListView list_view;
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list_view = (ListView) findViewById(R.id.list_views);
    list.add("Data 1");
    list.add("Data 2");
    list.add("Data 3");
    list.add("Data 4");
    list.add("Data 5");

    adapter =new ArrayAdapter<String>(this, R.layout.list_item,list);
    list_view.setAdapter(adapter);

    list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
            v.setBackgroundColor(Color.RED);
        }
    });

  }
}

將當前應用的顏色保存在變量中。

int currentColor = Color.white; // make this a class variable
int color = currentColor == white ? Color.RED : Color.Blue;
v.setBackgroundColor(color);

PS這是一個偽代碼,只是為了解釋這個想法

有幾種方法可以實現這一點,最簡單的一種是您可以在應用紅色之前在 if 條件下檢查背景顏色

list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View v, int i, long l) {
        if (R.color.blue === ((ColorDrawable) v.getBackground()).getColor()) {
            v.setBackgroundColor(Color.RED);
        }else{
           v.setBackgroundColor(Color.BLUE);
         }

    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM