2012-04-20 101 views
2

我在做项目Android。我想更改background颜色以及textcolor的选定项目从列表查看。这里是我的代码在运行时更改Android中ListView的背景颜色

<?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); 

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

+0

使自定义行对于listview.onclick更改自定义行的背景颜色和文本颜色。 – 2012-04-20 09:05:02

+0

没有使用自定义行的任何其他想法 – 2012-04-20 09:15:27

回答

-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> 

在活动Class.Define它想:

simpleefficientadapter efficientadapter; 

    efficientadapter=new simpleefficientadapter(CLASSNAME.this, VALUES); 
    listView.setAdapter(efficientadapter); 
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"); 
      } 
    }