Я пытался заполнить setMultiChoiceItems ArrayList, но он не работает.
Я на самом деле пытаюсь извлечь данные из JSON и показать их в диалоговом окне в виде контрольного списка, откуда я могу отправить данные на сервер.
Я уже закончил ту часть, где мне нужно читать из JSON, и работает нормально.Но когда я конвертирую ArrayList в Array, он не отображается в списке.Также, если возможно, дайте мне совет, как управлять одним и тем же кодом с помощью нескольких кнопок в соответствующем диалоговом окне.
Мой код выглядит следующим образом:
public class MainActivity extends AppCompatActivity {
TextView textView;
static String[] teams = {"man","RM", "Bar", "city"};
AlertDialog ad;
Button goBtn;
ArrayList<Integer> selected = new ArrayList<>();
boolean[] checkedItems;
private static final String URL = "https://jsonplaceholder.typicode.com/posts";
List<String> list = new ArrayList<String>();
String[] listItems;
String TAG = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateList();
goBtn = findViewById(R.id.goBtn);
textView = findViewById(R.id.textView);
goBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ad.show();
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Teams");
//builder.setItems(teams, null);
builder.setNegativeButton("Cancel",null);
builder.setMultiChoiceItems(listItems, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(getApplicationContext(), listItems[which], Toast.LENGTH_SHORT).show();
if(!selected.contains(which)){
selected.add(which);
Log.i(TAG, "onClick: added " + listItems[which]);
}
else{
selected.remove(which);
Log.i(TAG, "onClick: deleted "+ listItems[which]);
}
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
ad = builder.create();
//ad.show();
}
private void populateList(){
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
//Log.i(TAG, "onResponse: "+response);
JSONArray data = new JSONArray(response);
for(int i = 0; i< data.length(); i++){
JSONObject innerObj = data.getJSONObject(i);
String name = innerObj.getString("title");
list.add(name.substring(0,5));
if(i==7){
break;
}
//Log.i(TAG, "onResponse: "+list.get(i));
//Log.d(TAG, "onResponse: "+name.substring(0,5));
}
listItems = new String[list.size()];
listItems = list.toArray(new String[list.size()]);
/*for(int i = 0; i < list.size(); i++){
listItems[i] = list.get(i);
Log.i(TAG, "onResponse: "+listItems[i]);
//textView.append(list.get(i));
}*/
checkedItems = new boolean[listItems.length];
Log.i(TAG, "onResponse: SIZEE"+listItems.length);
Log.i(TAG, "onResponse: "+checkedItems.length);
}
catch (Exception e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
}
}