2012-04-20 70 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"); 
      } 
    }