Как отсортировать список в ListView?
Как отсортировать список в ListView при нажатии на кнопку по определенному слову
MainActivity:
public class MainActivity extends AppCompatActivity {
// url массива users:
private static final String JSON_OPERATION = "http://";
ArrayList<JSONObject> infoListOP;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//вызов списка:
loadJSONFromURLOperation(JSON_OPERATION);
}
// функция вызова списка:
private void loadJSONFromURLOperation(String url){
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>(){
@Override
public void onResponse(String response) {
try {
JSONObject object = new JSONObject(response);
// получаемый массив users:
JSONArray jsonArray = object.getJSONArray("users");
ArrayList<JSONObject> listItems = getArrayListFromJSONArray(jsonArray);
infoListOP = listItems;
ListAdapter adapter = new ListViewAdapterOperation(getApplicationContext(),R.layout.row,R.id.textViewName, listItems);
listview_operation.setAdapter(adapter);
}catch (JSONException e){
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private ArrayList<JSONObject> getArrayListFromJSONArray(JSONArray jsonArray){
ArrayList<JSONObject> aList = new ArrayList<JSONObject>();
try {
if(jsonArray!= null){
for(int i = 0; i<jsonArray.length();i++){
aList.add(jsonArray.getJSONObject(i));
}
}
}catch (JSONException js){
js.printStackTrace();
}
return aList;
}
Класс адаптера списка:
public class ListViewAdapterOperation extends ArrayAdapter<JSONObject> {
int listLayout;
ArrayList< JSONObject> usersList;
Context context;
public ListViewAdapterOperation(Context context, int listLayout, int field, ArrayList<JSONObject> usersList) {
super(context, listLayout, field, usersList);
this.context = context;
this.listLayout=listLayout;
this.usersList = usersList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View listViewItemOP = inflater.inflate(listLayout, null, false);
// тут строчки, отображаемые в ListView в MainActivity:
TextView Text = listViewItemOP.findViewById(R.id.Text);
TextView TextStatus = listViewItemOP.findViewById(R.id.TextStatus);
TextView TextSumma = listViewItemOP.findViewById(R.id.TextSumma);
try{
//Название операции:
Text.setText(usersList.get(position).getString("Text"));
//Пример текста в TextStatus: "В разработке", "Выполнен"
TextStatus.setText(usersList.get(position).getString("TextStatus"));
//Пример текста в TextSumma: "555.02"
TextSumma.setText(usersList.get(position).getString("Summa"));
}catch (JSONException je){
je.printStackTrace();
}
return listViewItemOP;
}