在列表视图中获取选定行的背景颜色

Get background color of selected row in listview

我必须以编程方式获取列表视图中所选行的背景颜色。 我写这个是为了给行着色:

View v;    
v.setBackgroundColor(context.getResources().getColor(R.color.childArticle));

但我不知道如何获取行的颜色,因为我必须这样做:

colorOfSelectedRow = v.getBackgroundColor();
if(colorOfSelectedRow == MY_COLOR) {
    // Do something
}

谢谢!

编辑: 我想知道按下行的颜色,但并非所有行都用相同的颜色着色!

您可以在标签中设置背景颜色 ID,如下所示,还可以获取 color.xml

中提到的颜色 ID

首先将颜色代码id设置到标签中。

view.setTag(R.color.childArticle);

然后当你想获取背景颜色时,从视图中获取标签并解析其值并从 color.xml 文件中获取颜色代码。

int ColorId = Integer.parseInt(view.getTag().toString());

这段代码将输出点击行的颜色字符串,如果没有设置颜色背景,则不输出任何内容。但是你没有具体说明你是如何设置背景颜色的。

ListView listView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
adapter.add("Blue");
adapter.add("None");
adapter.add("Red");
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    int color;

    Drawable background = view.getBackground();
    if (background instanceof ColorDrawable) {
      color = ((ColorDrawable) background).getColor();
      Log.d("MainActivity", Integer.toHexString(color));
    }
  }
});
listView.setAdapter(adapter);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    listView.getChildAt(0).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_blue_dark));
    listView.getChildAt(2).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_red_dark));
  }
});
final int MY_COLOR = R.color.childArticle; 
View v;    
v.setBackgroundColor(context.getResources()
.getColor(R.color.childArticle));
view.setTag(R.color.childArticle);
Integer colorOfSelectedRow = (Integer) v.getTag();
if(colorOfSelectedRow == MY_COLOR) {
// Do something
}

用这个..