Я новичок в android и хочу разобрать данные json в listview, а затем добавить функциональность поиска, но я не знаю, как добавить поиск.как установить json проанализированные данные в listview, а затем добавить в него функции поиска
Java-класс:
public class AndroidJSONParsingActivity extends ListActivity {
// url to make request
private static String url = "http://10.0.2.2/quick/punk.php";
// JSON Node names
private static final String TAG_CUSTOMER = "Customer";
private static final String TAG_CUSTOMER_CODE = "customer_code";
private static final String TAG_CUSTOMER_NAME = "customer_name";
private static final String TAG_CUSTOMER_MOBILE = "customer_mobile";
private static final String TAG_CUSTOMER_ADDRESS = "customer_address";
// contacts JSONArray
JSONArray Customer = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Contacts
Customer = json.getJSONArray(TAG_CUSTOMER);
// looping through All Contacts
for(int i = 0; i < Customer.length(); i++){
JSONObject c = Customer.getJSONObject(i);
// Storing each json item in variable
String customer_code = c.getString(TAG_CUSTOMER_CODE);
String customer_name = c.getString(TAG_CUSTOMER_NAME);
String customer_mobile = c.getString(TAG_CUSTOMER_MOBILE);
String customer_address = c.getString(TAG_CUSTOMER_ADDRESS);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_CUSTOMER_CODE, customer_code);
map.put(TAG_CUSTOMER_NAME, customer_name);
map.put(TAG_CUSTOMER_MOBILE, customer_mobile);
map.put(TAG_CUSTOMER_ADDRESS, customer_address);
// adding HashList to ArrayList
contactList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, contactList,
R.layout.list_item,
new String[] { TAG_CUSTOMER_CODE, TAG_CUSTOMER_NAME,TAG_CUSTOMER_MOBILE,TAG_CUSTOMER_ADDRESS}, new int[] {
R.id.code, R.id.name,R.id.mobile,R.id.address});
setListAdapter(adapter);
}
}
Файл XML является:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- Main ListView
Always give id value as list(@android:id/list)
-->
<Button
android:id="@+id/button1"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:text="+" />
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
То, что я хочу, что, когда пользователь вводит что-то в текстовое поле, он должен искать в данных, которые есть в списке. Может ли кто-нибудь сказать мне, как его реализовать?
Посмотрите, когда мы обрабатываем json-данные в listview, тогда мы даем id из вида списка as (android: id = "@ android: id/list") .. но для поиска из списка мне нужен id списка, например (lv = (listview) findviewbyid (R.id. (*))) вместо звездочки мне нужен listview id .. – Dev
для поиска в listview вам просто нужно сравнить/фильтровать данные списка в соответствии с тем, что введено в редактировать текст. Отображать новые данные в соответствии с списком на основе ввода пользователем в edittext. – Raghunandan
, если ваш список отображает список имен, затем введите данные как и когда пользовательские типы в editext сравнивают его со списком данных и сообщают об этом адаптеру изменений и отображаемых элементов. – Raghunandan