2016-08-26 2 views
0

Я не знаю, возможно ли это, но я хочу спросить, как я могу заполнить список, используя только часть arraylist. Содержимое моего arraylist - из базы данных mySQL (Im использует залп). Это список элементов с категорией и item_name. Я хочу, чтобы всякий раз, когда нажимается кнопка (название категории), элементы item_names, связанные с этой категорией, будут отображаться в списке arrayList. Извините за мой плохой английский.как заполнить список с помощью только части arraylist

Это мои коды: это отображает весь элемент в моем спискеView.

import ... 

public class Menu extends AppCompatActivity implements Response.Listener<String> { 

    final String TAG = this.getClass().getSimpleName(); 

    public ListView itemList; 
    public ArrayList<myItem> itemList; 
    public myItemAdapter adapter; 

    Button Fruit, Meat, Dairy; 

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

     String category = "http://10.0.2.2/myPHP/item.php"; 

     StringRequest stringRequestCategory = new StringRequest(Request.Method.GET, category, this, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(getApplicationContext(), "Error retrieving data", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequestCategory); 

    Fruit = (Button)findViewById(R.id.Fruit); 
    Fruit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //display the items with the category FRUIT 

      } 
     }); 

    } 

    @Override 
    public void onResponse(String response) { 
     Log.d(TAG, response); 

     itemList = new JsonConverter<myItem>().toArrayList(response, myItem.class); 

     adapter = new myCategoryAdapter(getApplicationContext(), itemList); 
     itemList.setAdapter(adapter); 

    } 

} 

PHP кода:

<?php 
include_once ("init.php"); 

$query = "SELECT * FROM tbl_item ORDER BY itemID ASC"; 

$result = mysqli_query($con,$query); 

while($row = mysqli_fetch_assoc($result)){ 
    $data[] = $row; 

} 

echo json_encode($data); 
?> 

ответ

0

Вам придется отфильтровать список, прежде чем отправить его в адаптер.

Скажите, что вы хотите показывать только фрукты категории.

Fruit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ArrayList<myItem> filteredItems = new ArrayList<myItem>(); 
      for (myItem item : itemList) { 
       // Not sure how your myItem class looks like but check category here. 
       if ("fruit".equals(item.getCategory())) { 
        filteredItems.add(item); 
       } 
      } 
      adapter.updateContent(filteredItems); 
     } 
    }); 

Добавьте этот метод в класс адаптера, чтобы обновлять отображаемые элементы в ListView.

public void updateContent(List<myItem> items) { 
    currentItems.clear(); 
    currentItems.addAll(items); 
    notifyDataSetChanged(); 
} 
+0

где я получу currentItems? –

+0

этот метод очищает все данные в моем ArrayList . кроме тех, которые соответствуют условию. но когда я переключаюсь на новую категорию, больше нет элемента для отображения. –

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