2016-08-24 9 views
2

アレイアダプタを使用して単純な複数選択リストビューを作成しました。背景色を特定のリスト項目に設定したい。しかし、私は2項目の平均を設定背景を選択し、自動的に選択された賢明なように12番目の位置と22の位置を設定すると仮定します。私に問題を提案してください。リストビューでの複数選択

コードブラック。

public class MainActivity extends Activity { 

ListView lvCountry; 

ArrayList<Integer> list = new ArrayList<Integer>(); 
String[] country = { "India", "USA", "Russsia", "China", "Pakistan", 
     "Canada", "UK", "arcot", "vellore", "gudiyattam", "arani", 
     "palani", "chennai", "padi", "velacherry", "ambattur", 
     "ambatttur ot", "maduravoyal", "guindy" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    lvCountry = (ListView) findViewById(R.id.listView1); 
    // Array adapter 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
      MainActivity.this, android.R.layout.simple_list_item_1, country); 
    lvCountry.setAdapter(arrayAdapter); 

    // list selection part 
    lvCountry.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      // color selection select item 
      arg1.setBackgroundColor(Color.GRAY); 
     } 
    }); 
}} 
+0

あなたはリストビューアダプタに –

+0

は、このITヘルプを経ることをしなければならないあなたhttp://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html – sushildlh

+0

〜arg1に.setBackgroundColor(Color.GRAY);〜項目がbgcolorに設定されているときに複数の項目が選択されている場合は、問題を解決して修正を提案してください。 – wingsraam

答えて

1

は実際にどのようなアイテムをリストビュースワイプするときに問題があることはscrollviewにリストビューを入れて、この問題を回避shuffling.toあります。私はコードサンプルを提供したい場合。

+0

サンプルコード@Sandeep Kumarを教えてください。 – wingsraam

+0

以下のチェックを入れてくださいxmlファイルとjavafile –

+0

check below post xmlファイル&javafile –

0

デフォルトですべてのアイテムに「選択済み」フラグが設定されている独自のアダプタを作成します。クリックリスナーでは、指定したアイテムのフラグを設定し、強制的に再描画します。より速く動作するので、RecuclerViewを使用する必要があります。ビューがbhatt4982でこの答えのように選択フラグと設定した背景に応じ

+0

あなたは彼の質問に答えませんでした – Alexander

0

XMLファイル

 <ScrollView 
      android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginBottom="5dp" 
    android:scrollbars="none" 
    android:visibility="gone"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <ListView 

      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="1dp" 
      android:scrollbars="none" 
      android:visibility="visible" /> 
    </LinearLayout> 

</ScrollView> 

Javaクラス

listview.setAdapter(agentRequestAdapter); 

    setListViewHeightBasedOnChildren(lvAgntRqstView); 
     //////////////////////////// 

    private static void setListViewHeightBasedOnChildren(ListView myListView) { 
    try { 
     ListAdapter myListAdapter = myListView.getAdapter(); 
     if (myListAdapter == null) { 
      //do nothing return null 
      return; 
     } 
     //set listAdapter in loop for getting final size 
     int totalHeight = 0; 
     for (int size = 0; size < myListAdapter.getCount(); size++) { 
      View listItem = myListAdapter.getView(size, null, myListView); 
      listItem.measure(0, 0); 
      totalHeight += listItem.getMeasuredHeight(); 
     } 
     //setting listview item in adapter 
     ViewGroup.LayoutParams params = myListView.getLayoutParams(); 
     params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1)); 
     myListView.setLayoutParams(params); 
     // print height of adapter on log 
     Log.i("height of listItem:", String.valueOf(totalHeight)); 


    } catch (NullPointerException e) { 

    } 
} 
0

をチェックし、膨張されたとき、あなたはオプションを作るために属性を設定することができますリスト内の複数のエントリを選択するには:

まず、この例のようにリストビュー自体で設定できます

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    listView.setItemCanFocus(false); 

第2に、あなたのレイアウトやlayout_simple_list_item_1.xmlで宣言できます。 例:

<ListView 
    ... 
    android:background="@drawable/your_drawable" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"/> 

そして、あなたのカスタム描画可能に背景を設定することができます。

Source

+0

arg1.setBackgroundColor(Color.GRAY); //このコード特定の項目をクリックすると、bgcolorを設定して自動的に別の項目を選択したときに選択します.pls help – wingsraam

+0

こんにちは、ListviewのListviewで1つの質問があります。リストビューに20項目ありますが、現在の画面では7項目しか表示されません。スクロールして表示されるリストビューが表示されます。現在のクエリは、2,3,6などのアイテムを現在の画面上でマルチセレクションしたものですが、2番目のページの後に同じ時間(スクロールダウン)画面1には7つの項目がありますが、私の選択は2,3,6のすべてですが、画面2を除くすべての項目は9,10,13が選択されています。この問題を解決しますか? – wingsraam

関連する問題