在运行时更改android中ListView的背景颜色

时间:2012-04-20 08:50:41

标签: java android listview android-listview

我正在 Android 中进行项目。我想从 ListView 更改所选项目的background颜色和textcolor。这是我的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="right"
    android:orientation="vertical" >


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


        <ListView
            android:id="@+id/listView1"
            android:layout_width="265dp"
            android:layout_height="366dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:layout_weight="0.00"
            android:drawSelectorOnTop="true" >

        </ListView>
    </LinearLayout>

</LinearLayout> 

所以,我ListView有一些学生姓名,并且使用checkbox有多种选择。

ListView stud_lst=(ListView) findViewById(R.id.listView1);

stud_lst.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

我想更改所选学生的背景和文字颜色。 我已经看到了一些答案,但我没有得到它。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

使用自定义适配器,并在您的活动类中执行以下操作:

   //  mListview is ur listview object.
   mListview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
                    view.setBackgroundColor("your bg's color id");
            }
   }

答案 1 :(得分:-1)

您必须创建自定义适配器才能更改项目的背景颜色。以下是自定义适配器的示例:

public class PaListAdapter  extends BaseAdapter{
        private LayoutInflater mInflater;

         private ArrayList<String> platevalue = new ArrayList<String>();

           ViewHolder holder;
        public PaListAdapter(Context context,ArrayList<String> value)
        {
            // Cache the LayoutInflate to avoid asking for a new one each time.
            mInflater = LayoutInflater.from(context);



            //mycontext = context;
            platevalue.clear();
            platevalue =value;



        }


        public int getCount() 
        {
            return platevalue.size();
        }

        public Object getItem(int position) 
        {
            return position;
        }

        public long getItemId(int position) 
        {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) 
        {





            if (convertView == null) 
            {
                 convertView = mInflater.inflate(R.layout.select_dialog, null);

                holder = new ViewHolder();
                holder.hTransID =(TextView) convertView.findViewById(R.id.txtChoice);




                convertView.setTag(holder);
            }
            else 
            {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.hTransID.setText(platevalue.get(position));




            return convertView;
        }

        static class ViewHolder 
        {      
              TextView    hTransID;


        }
    }

select_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:descendantFocusability="blocksDescendants"
 android:background="#000000"
    >

    <TextView
        android:id="@+id/txtChoice"

        android:layout_gravity="center_vertical|left"
        android:gravity="center_vertical|left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:textColor="#000000"/> 

</LinearLayout>

在活动类中。定义它:

simpleefficientadapter efficientadapter;

  efficientadapter=new simpleefficientadapter(CLASSNAME.this, VALUES);
   listView.setAdapter(efficientadapter);