2014-07-05 3 views
1

У меня есть следующая функция, которая создает ListAdapter;Установить значения ListAdapter в String

ListAdapter adapter = new SimpleAdapter(
         AllProductsActivity.this, productsList, 
         R.layout.list_item, new String[] { TAG_PID, TAG_NAME, TAG_PHONE, TAG_ADDRESS, TAG_SIZE, TAG_CHES, TAG_PE, TAG_PRICE}, 
         new int[] { R.id.pid, R.id.name, R.id.phone, R.id.address, R.id.Small, R.id.XC, R.id.Pep, R.id.price}); 
       // updating listview 
       setListAdapter(adapter); 

После того, как ListView обновляется, я хочу, чтобы получить 1-ую строку ListView, который будет иметь самую высокую pid значение и присвоить его значения для некоторых строковых значений. Чтобы дать вам представление о том, чего я хочу, псевдокод следующим образом;

String nam = highest pid.name; 
    String pho = highest pid.phone; 
    ... 

Любые мысли о том, как этого достичь?

+1

Что вы хотите достичь? Просьба уточнить больше. – CodeWarrior

+0

Он хочет получить имя и телефон и т. Д. Значения строки списка, которая имеет самое высокое значение TAG_PID, поскольку я предполагаю, что это int – raklar

ответ

0

Я думаю, вы должны вернуть адаптер из ListView и проверить все элементы в этот адаптер, чтобы узнать, который имеет самый высокий идентификатор процесса.

Это будет выглядеть следующим образом:

SimpleAdapter mAdapter = (SimpleAdapter)listView.getAdapter(); 
    Map<String, String> maxIdMap = null; 
    for(int i=0; i<mAdapter.getCount(); i++){ 
     Map<String, String> map = (Map<String, String>)mAdapter.getItem(i); 
     Integer pid = Integer.parseInt(map.get(TAG_PID)); 
     if(maxIdMap==null){ 
      maxIdMap = map; 
     } else if(pid>Integer.parseInt(maxIdMap.get(TAG_PID))){ 
      maxIdMap = map; 
     } 
    } 
    if(maxIdMap!=null) { 
     // There is at least one record 
     String name = maxIdMap.get(TAG_NAME); 
     String phone = maxIdMap.get(TAG_PHONE); 
     Log.d("Test", "Name: " + name + " Phone: " + phone); 
    }