2016-03-04 5 views
1

У меня есть проблема, у меня есть кнопка при нажатии кнопки, она должна перейти ко второму действию, которое состоит из списка с флажками, я могу выбрать любое количество элементов в списке, после выбора Я должен вернуть выбранные элементы в поле редактирования в основном действии.Listview with multiple select checkbox

Thank u.

общественного класса MainActivity расширяет AppCompatActivity {

private ListView llChb; 
Button save; 

private String[] data = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
     "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", 
     "x", "y", "z" }; 
private ArrayList<String> arrData=null; 

private ArrayList<InfoRowdata> infodata; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    save= (Button) findViewById(R.id.button_save); 
    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 

      llChb = (ListView) findViewById(R.id.llChb); 

    infodata = new ArrayList<InfoRowdata>(); 
    for (int i = 0; i < data.length; i++) { 
     infodata.add(new InfoRowdata(false, i)); 
     // System.out.println(i); 
     //System.out.println("Data is == "+data[i]); 
    } 
    llChb.invalidate(); 
    llChb.setAdapter(new MyAdapter()); 
} 
public class MyAdapter extends BaseAdapter { 

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

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View row = null; 
     row = View.inflate(getApplicationContext(), R.layout.rowxml, null); 
     TextView tvContent=(TextView) row.findViewById(R.id.tvContent); 
     //tvContent.setText(data[position]); 
     tvContent.setText(data[position]); 
     //System.out.println("The Text is here like.. == "+tvContent.getText().toString()); 

     final CheckBox cb = (CheckBox) row 
       .findViewById(R.id.chbContent); 
     cb.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (infodata.get(position).isclicked) { 
        infodata.get(position).isclicked = false; 
       } else { 
        infodata.get(position).isclicked = true; 
       } 

       for(int i=0;i<infodata.size();i++) 
       { 
        if (infodata.get(i).isclicked) 
        { 
         System.out.println("Selectes Are == "+ data[i]); 
        } 
       } 
      } 
     }); 

     if (infodata.get(position).isclicked) { 

      cb.setChecked(true); 
     } 
     else { 
      cb.setChecked(false); 
     } 
     return row; 


    } 

} 

Приведенный выше код моя вторая активность.

+0

проверить это http://dj-android.blogspot.in/2013/02/multi-selection-listview-android-with.html –

+0

и может пожалуйста, дайте мне правильное решение – aadhagupta

ответ

0

вы можете использовать multiple choice mode для listview, а затем получить выбранные элементы через sparseBooleanArray, а затем отправить свой выбор на mainActivity с помощью Intent

0

Это то, что я понял из вашего запроса. Что нам нужно сделать: Создайте ListView с несколькими режимами выбора с событием нажатия кнопки. При нажатии кнопки мыши мы выбираем элементы списка выбранного списка и создаем Bundle с массивом выбранных элементов и сохраняем его в Intent и запускаем другое действие.

public void onClick(View v) { 
    SparseBooleanArray checked = listView.getCheckedItemPositions(); 
    ArrayList<String> selectedItems = new ArrayList<String>(); 
    for (int i = 0; i < checked.size(); i++) { 
     // Item position in adapter 
     int position = checked.keyAt(i); 
     // Add data if it is checked i.e. (== TRUE!) 
     if (checked.valueAt(i)) 
      selectedItems.add(adapter.getItem(position)); 
    } 
     String[] outputStrArr = new String[selectedItems.size()]; 

    for (int i = 0; i < selectedItems.size(); i++) { 
     outputStrArr[i] = selectedItems.get(i); 
    } 

    Intent intent = new Intent(getApplicationContext(), 
      NextActivity.class); 

    // Create a bundle object 
    Bundle b = new Bundle(); 
    b.putStringArray("selectedItems", outputStrArr); 

    // Add the bundle to the intent. 
    intent.putExtras(b); 

    // start the NextActivity 
    startActivity(intent);