3

Я пытаюсь сделать Android Multiple select item с помощью кнопки и диалогового окна и отобразить выбранный элемент в виде списка (как на картинке) вместо кнопки (ток отображается в кнопке: см фото)Android Несколько элементов выберите элемент, используя кнопку и диалоговое окно, и отобразите выбранный элемент в списке, а не кнопку

я могу отобразить приемник в кнопке ниже, но я хочу то же, которое будет отображаться в списке:

показывает после выбора из диалогового флажка, как :

"Receiver1, Receiver2" 

Я хочу люблю:

image of Receiver1 with Receiver1 Name 
image of Receiver2 with Receiver2 Name 

SendServiceActivity.java

import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.text.Layout; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 

import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.util.Log; 
import android.widget.ImageView; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.util.ArrayList; 

public class SendServiceActivity extends AppCompatActivity implements View.OnClickListener{ 
protected Button selectReceiversBtn; 
    protected CharSequence[] receivers = { 
      "Receiver1", "Receiver2", "Receivers3"}; 
    protected ArrayList<CharSequence> selectedReceivers = new ArrayList<>(); 

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

     selectReceiversBtn = (Button) findViewById(R.id.select_receivers); 
     selectReceiversBtn.setOnClickListener((View.OnClickListener) this); 
    } 

    @Override 
    public void onClick(View view) { 
     switch(view.getId()) { 
      case R.id.select_receivers: 
       showSelectReceiversDialog(); 
       break; 
      default: 
       break; 
     } 
    } 

    protected void onChangeSelectedReceivers() { 
     StringBuilder stringBuilder = new StringBuilder(); 

     for(CharSequence receivers : selectedReceivers) 
      stringBuilder.append(receivers + ","); 
     selectReceiversBtn.setText(stringBuilder.toString()); 
    } 

    protected void showSelectReceiversDialog() { 
     boolean[] checkedReceivers = new boolean[receivers.length]; 
     int count = receivers.length; 

     for(int i = 0; i < count; i++) 
      checkedReceivers[i] = selectedReceivers.contains(receivers[i]); 

     DialogInterface.OnMultiChoiceClickListener receiversDialogListener = new DialogInterface.OnMultiChoiceClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
       if(isChecked) 
        selectedReceivers.add(receivers[which]); 
       else 
        selectedReceivers.remove(receivers[which]); 

       onChangeSelectedReceivers(); 
      } 
     }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder 
       .setTitle("Select Receivers") 
       .setMultiChoiceItems(receivers, checkedReceivers, receiversDialogListener) 
       .setCancelable(false) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.dismiss(); 
        } 
       }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

activity_main.xml

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

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:padding="5dip" 
       android:text="Select Receivers" /> 

      <Button 
       android:id="@+id/select_receivers" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:padding="5dip" 
       android:text="- None Selected -" /> 


     </LinearLayout> 

enter image description here

ответ

2

полный исходный код вашего требования ниже:

mainactivity.class

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.Layout; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Environment; 
import android.provider.MediaStore; 
import android.util.Log; 
import android.widget.ImageView; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.util.ArrayList; 

public class MainActivity extends Activity implements View.OnClickListener{ 
    ArrayAdapter<CharSequence> adapter; 
    ListView listView1; 
    protected Button selectReceiversBtn; 
    protected CharSequence[] receivers = { 
      "Receiver1", "Receiver2", "Receivers3"}; 
    protected ArrayList<CharSequence> selectedReceivers = new ArrayList<>(); 

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

     listView1=(ListView) findViewById(R.id.listView1); 
     selectReceiversBtn = (Button) findViewById(R.id.select_receivers); 
     selectReceiversBtn.setOnClickListener((View.OnClickListener) this); 


     // String[] your_array = {"a","b","c"} 
     adapter = new ArrayAdapter<CharSequence>(this, 
       android.R.layout.simple_list_item_multiple_choice, selectedReceivers); 
     listView1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     listView1.setAdapter(adapter); 
    } 

    @Override 
    public void onClick(View view) { 
     switch(view.getId()) { 
      case R.id.select_receivers: 
       showSelectReceiversDialog(); 
       break; 
      default: 
       break; 
     } 
    } 

    protected void onChangeSelectedReceivers() { 
     StringBuilder stringBuilder = new StringBuilder(); 

     for(CharSequence receivers : selectedReceivers) 
      stringBuilder.append(receivers + ","); 
     adapter.notifyDataSetChanged(); 
     //selectReceiversBtn.setText(stringBuilder.toString()); 
    } 

    protected void showSelectReceiversDialog() { 
     boolean[] checkedReceivers = new boolean[receivers.length]; 
     int count = receivers.length; 

     for(int i = 0; i < count; i++) 
      checkedReceivers[i] = selectedReceivers.contains(receivers[i]); 

     DialogInterface.OnMultiChoiceClickListener receiversDialogListener = new DialogInterface.OnMultiChoiceClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
       if(isChecked) 
        selectedReceivers.add(receivers[which]); 
       else 
        selectedReceivers.remove(receivers[which]); 

       onChangeSelectedReceivers(); 
      } 
     }; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder 
       .setTitle("Select Receivers") 
       .setMultiChoiceItems(receivers, checkedReceivers, receiversDialogListener) 
       .setCancelable(false) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.dismiss(); 

        } 
       }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:text="Select Receivers" /> 

    <Button 
     android:id="@+id/select_receivers" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:text="- None Selected -" /> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

копировать и вставить выше code..when Вы регистрируетесь в диалоге это автоматический add in listview

2

Ниже код будет работать для вас:

String[] your_array = {"a","b","c"} 
     adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_multiple_choice, your_array); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     listView.setAdapter(adapter); 

Использование вышеуказанного кода Вы можете отмечать-непроверено в виде списка.

+0

@ Ketan, как я могу реализовать свой код в своем коде, так как новый в Java так спросить вас. – RRPANDEY

+0

Ваш массив - приемники ..? правый –

+1

адаптер = новый ArrayAdapter (это, android.R.layout.simple_list_item_multiple_choice, приемники); listView.setChoiceMode (ListView.CHOICE_MODE_MULTIPLE); listView.setAdapter (адаптер); –

 Смежные вопросы

  • Нет связанных вопросов^_^