2012-01-05 38 views
-1

我有每個項目背景圖像列表視圖。 我的問題是如何在列表中選擇多個項目,如何改變他們的背景。 有了這個代碼,我能夠在一個時間只選擇1項。 以下是我的列表視圖的XML。如何改變複式項目的背景在列表視圖

main.xml中

<ListView android:layout_height="350dp" android:id="@id/ListView01" android:layout_width="fill_parent"></ListView> 

itemrow.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@layout/list_bg" 
    android:orientation="vertical"> 

<TextView android:id="@+id/name"   
    android:textSize="16sp" android:paddingLeft="25dp"  
    android:textStyle="bold" android:text="hello" 
    android:textColor="#FFFFFF" android:gravity="center_vertical" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 

</LinearLayout> 

list_bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_selected="true" 
    android:drawable="@android:color/transparent" /> 
<item 
android:state_selected="false" 
    android:state_pressed="false" 
    android:drawable="@drawable/cellbgnew" /> 
<item android:state_pressed="true" 
    android:drawable="@drawable/cellbghover" /> 
<item android:state_selected="true" 
android:state_pressed="false" 
    android:drawable="@drawable/cellbghover" /> 
</selector> 

回答

0

您可以使用ListView.setChoiceMode(ListView.MULTIPLE_CHOICE_MODE)來實現這一目標。或者可以創建自己的佈局。

+0

它不是在我的情況下工作,你能不能給我一些代碼 – Vamshi 2012-01-05 11:24:24

0

請按照下面的策略,最簡單的是:

形成具有列表的大小的布爾數組。 將數組的所有元素的初始值設置爲false。 在GetView的setBackground方法根據在該位置陣列值傳遞背景值。 setItemClickListener列表上,並具有體ARR [位置] =!常用3 [位置],並通過調用adapter.notifyDatasetInvalidated()方法重新加載列表。

+0

你能不能給我這個 – Vamshi 2012-01-05 13:29:31

+0

我沒有一個樣品,現在示例代碼,但我認爲這是簡單的邏輯,任何人都可以在5-10分鐘內實施。 – jeet 2012-01-06 04:54:56

+0

我是新來的android和我不能實現在5 -10分鐘。你能給15分鐘的時間來解決這個問題嗎? – Vamshi 2012-01-06 08:46:45

1

其可能與ListView.CHOICE_MODE_MULTIPLE

請提供以下鏈接的例子,它可以幫助你。

Android ListView Multiple Choice Example

新建答案:

你怎麼能選擇在的ListView多個項目?我們一次只能選擇一個項目。 它可能檢查多個項目ListViewCHOICE_MODE_MULTIPLE,同樣的事情我給予例子的鏈接。

如果您需要在ListView中選擇多個項目,則不可能。

還有一個問題也可以用同樣的要求,請檢查一下。,它可以幫助你。 Selecting multiple items in ListView

+0

在我的情況下,listview中沒有複選框只是名稱顯示在列表視圖 – Vamshi 2012-01-05 13:30:29

+0

@Vamshi請檢查我更新的答案,它可能會解決您的問題。 – 2012-01-05 14:09:43

+0

不,這是可能的,我在一個應用程序中看到,但沒有代碼 – Vamshi 2012-01-05 14:20:39

0

我不認爲這是可能給我寫完整的代碼,但我盡我所能爲您解決問題:

公共類MainActivity擴展活動 { 無效的onCreate() { 的setContentView (R.layout.main);

} }

+0

我正在討論顯示多選的列表視圖。不要創建一個活動,我知道非常好的基礎知識,在我的問題中也可以看到我的xml – Vamshi 2012-01-06 08:54:16

1

好,找到一個樣品活性下面的代碼。:

public class SampleActivity extends Activity { 
    private String[] arrItems={"A", "B", "C", "D", "E"}; 
    private boolean[] arrState={false, false, false, false, false}; 
    private ListView lv; 
    private ArrAdapter adapter; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     lv=(ListView) findViewById(R.id.listItems); 
     adapter=new ArrAdapter(this); 
     lv.setAdapter(adapter); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, 
        long id) { 
       // TODO Auto-generated method stub 
       arrState[position]=!arrState[position]; 
       adapter.notifyDataSetChanged(); 
      } 
     }); 
    } 

    private class ArrAdapter extends ArrayAdapter<String> 
    { 
     Context mContext=null; 
     public ArrAdapter(Context context) { 
      super(context, R.layout.row); 
      // TODO Auto-generated constructor stub 
      mContext=context; 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return arrItems.length; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      View vi=convertView; 
      ViewHolder holder=null; 
      if(vi==null) 
      { 
       vi=LayoutInflater.from(mContext).inflate(R.layout.row, parent, false); 
       holder=new ViewHolder(); 
       holder.mTxt=(TextView) vi.findViewById(R.id.lbl); 
       vi.setTag(holder); 
      } 
      else 
       holder=(ViewHolder) vi.getTag(); 
      holder.mTxt.setText(arrItems[position]); 
      if(arrState[position]) 
       vi.setBackgroundColor(Color.BLUE); 
      else 
       vi.setBackgroundColor(Color.WHITE); 
      return super.getView(position, convertView, parent); 
     } 


     private class ViewHolder 
     { 
      TextView mTxt=null; 
     } 


    } 

    private void clear() 
    { 
     Arrays.fill(arrState, false); 
     adapter.notifyDataSetChanged(); 
    } 
相關問題