如何在列表视图中选择列表项的颜色?

时间:2014-06-22 09:51:19

标签: android android-listview

我有一个主要活动类,其中我定义了字符串数组,该字符串数组从保存在res / value中的XML文件中获取列表,其中包含项目列表。现在我想要当任何项目选择它时颜色变为黄色。怎么做请帮助:))

提前感谢::)

我的两个文件是list_data.XML和Main Activity.java

List_data.XML

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="tias_list">
        <item>About us</item>
        <item> Offered</item>
        <item> year  </item>
        <item>Process</item>
        <item>item1</item>>    
        <item>item2</item>>
        <item>item3</item>>
        <item>item4</item>
        </string-array>
        </resources>

我的主要活动类代码

public class MainActivity extends ListActivity  {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);



        String[] tias_list = getResources().getStringArray(R.array.tias_list);


        this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label,tias_list));


        ListView lv = getListView();

        lv.setCacheColorHint(0);
        lv.setBackgroundResource(R.drawable.black);


       lv.setOnItemClickListener(new OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent,View view,int position, long id) {


            if (position == 0)
            {
                Intent myIntent = new Intent(getApplicationContext(), SingleListItem.class);
                startActivity(myIntent);
            }
            else if(position == 1)
            {
                Intent myIntent = new Intent(getApplicationContext(), lastyear.class);
                startActivity(myIntent);

            }
            else if(position == 2)
            {
                Intent myIntent = new Intent(getApplicationContext(), la.class);
                startActivity(myIntent);

            }
            else if(position == 3)
            {
                Intent myIntent = new Intent(getApplicationContext(),la.class);
                startActivity(myIntent);

            }
            else if(position == 4)
            {
                Intent myIntent = new Intent(getApplicationContext(), SingleListItem.class);
                startActivity(myIntent);

            }
            else if(position == 5)
            {
                Intent myIntent = new Intent(getApplicationContext(), SingleListItem.class);
                startActivity(myIntent);

            }
            else if(position == 6)
            {
                Intent myIntent = new Intent(getApplicationContext(), SingleListItem.class);
                startActivity(myIntent);

            }
            else if(position == 7)
            {
                Intent myIntent = new Intent(getApplicationContext(), SingleListItem.class);
                startActivity(myIntent);

            }

          }
       });

    } 

3 个答案:

答案 0 :(得分:1)

您当前使用的适配器是默认适配器。但是,现在您要修改它的属性。为此,您需要实现自定义适配器 - 您自己的适配器。如果你不知道如何做到这一点,只需谷歌自定义ListView适配器。

在该自定义适配器中,有一个getView()方法,并且在自定义适配器的getView()方法中检查项目的位置是否与所选项目相同。如果是,请设置背景颜色。

这里有一个完整的答案:https://stackoverflow.com/a/16978159/1239966

答案 1 :(得分:0)

设置所选项目的颜色使用

view.setBackgroundColor(Color.YELLOW);

,即在您的代码中

 lv.setOnItemClickListener(new OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent,View view,int position, long id) {

    view.setBackgroundColor(Color.YELLOW);
  // your code

答案 2 :(得分:0)

在你的getView方法中,你必须在那里做一些代码。

int currentPosition=0;



  if (position == currentPosition) {
    convertView.setBackgroundColor(Color.YELLOW);
    } else {
    convertView.setBackgroundColor(Color.YOUR DEFAULT COLOR);
}

//点击商品代码:

convertView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    currentPosition = position;
                    adapter.notifyDataSetChanged();

                }
            });