2012-01-05 10 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

0

、すべての最も単純に次の戦略に従ってください:

リストのサイズを持つブール配列を作成します。 arrayのすべての要素の初期値をfalseに設定します。 GetView setBackgroundメソッド内の は、その位置の配列の値に従ってバックグラウンド値を渡します。 setItemClickListenerをリスト上にあり、本文がarr [position] =!arr [position]であり、adapter.notifyDatasetInvalidated()メソッドを呼び出してリストをリロードします。

+0

を与えることができ、あなたは私に私が今のサンプルを持っていけないが、私は、それは単純な論理だと思う、と誰もがすることができます。この – Vamshi

+0

のためのサンプルコードを与えることができますそれを5〜10分で実施する。 – jeet

+0

私はアンドロイドに新しく、私は5 -10分で実装することができません。この問題を解決するために15分の時間を与えてください。 – Vamshi

1

ListView.CHOICE_MODE_MULTIPLE

とその可能性、それはあなたを助けることが、リンクの下で入手できる例をご確認ください。

Android ListView Multiple Choice Example

新しい回答:

あなたはのListViewで複数の項目を選択するにはどうすればよいですか?一度に選択できるアイテムは1つだけです。 ListViewCHOICE_MODE_MULTIPLEで複数の項目をチェックすることが可能です。これは例と同じです。

ListViewで複数の項目を選択する必要がある場合は、不可能です。

もう1つの質問も同じ要件で利用できます。、それはあなたを助けるかもしれません。 Selecting multiple items in ListView

+0

私の場合、リストビューにはチェックボックスはありません。リストビューに表示されている名前だけです。 – Vamshi

+0

@Vamshi私の更新された答えをチェックしてください。 –

+0

いいえ、1つのアプリケーションで見たことがありますが、コードはありません – Vamshi

0

私はそれが完全なコードを書くために私には可能であると思ういけないが、私はあなたの問題を解決するために全力をしようとしています:

パブリッククラスMainActivityは活動 { 空のonCreate() { setContentViewを拡張(R.layout.main);

}}

+0

私はマルチ選択でリストビューを表示することを話しています。アクティビティを作成するのではなく、私は非常によく基本を知っている、私の質問にも私のXMLを参照してください – Vamshi

1

[OK]を、試料の活性については、以下のコードを見つけます。:

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(); 
    } 
関連する問題