Как получить значение объекта из позиции адаптера списка

Как получить значение из положения адаптера, у меня есть код ниже:

CategoriesXmlParser categoryXmlParser = new CategoriesXmlParser();
List<HashMap<String, Object>> categories = null;

try {
  categories = categoryXmlParser.parse(reader);
} catch (Exception e) {
  Log.d("Exception", e.toString());
}

String[] from = { "name", "image" };
int[] to = { R.id.nama_category, R.id.logo_category };

final SimpleAdapter adapter = new SimpleAdapter(getBaseContext(),
                    categories, R.layout.per_item_category, from, to);

mListView.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
    Object obj = mListView.getAdapter().getItem(position);
    String value = obj.toString();
    Log.d("MyLog", "Value is: "+value);
    String name = // how code to get name value.
  }
});

Если я посмотрю, зарегистрирую это на logcat в MyLog, я получу следующее:

Значение: {position=12, image_path=http://192.168.103.121/xml/icon.png, link=http://192.168.103.121/xml/category.php?kat_id=13, имя=Категория 13}

Итак, мой вопрос: я хочу получить значение из имени и сохранить его в переменной имени строки, я хочу получить только «Категорию 13» в имени строки. Потому что я хочу передать его другому действию.


person Dave Jackson    schedule 18.01.2013    source источник
comment
Итак, каким типом объекта вы заполняете свой адаптер? Вы можете просто привести результат getItem() к этому, а затем использовать любые методы доступа, которые вы реализовали, чтобы получить значение для поля name.   -  person MH.    schedule 18.01.2013


Ответы (5)


Похоже, вы сделали объект с hashmap, типа blablabla.put("name", "value")?? Если да. Попробуй это:

mListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
        Object obj = mListView.getAdapter().getItem(position);
        String value = obj.toString();
        Log.d("MyLog", "Value is: "+value);
        String name = // how code to get name value.
    }
});

Изменить на:

mListView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        HashMap<String, Object> obj = (HashMap<String, Object>) adapter.getItem(position);
            String name = (String) obj.get("name");
            Log.d("Yourtag", name);
    }
});
person Community    schedule 18.01.2013
comment
Спасибо, Энди Унпам. эта работа для динамических данных. поэтому я просто получаю товар. да, он использует хэш-карту. действительно, это из другого кода, который я использую. В итоге я добавил науку, а именно хэш-карту. Спасибо... - person Dave Jackson; 19.01.2013
comment
Работает правильно, потому что (помните), что mListView.getAdapter().getItem(position) тот же (Listview) имеет return @String, и вы можете использовать obj как строку, если нет, нет. - person ; 01.10.2015

Вы также можете получить данные адаптера через AdapterView<?> parent

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //setHasOptionsMenu(true);
    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            final Filedata mnotes = (Filedata) parent
                    .getItemAtPosition(position);
           Toast.makeText(getActivity(), Filedata.getName(),Toast.LENGTH_SHORT).show();
});
}
person LOG_TAG    schedule 14.02.2014

Вот что я сделал: -

lvHomePage.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                   @Override
                   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                       Transaction selectedFromList =(Transaction)parent.getAdapter().getItem(position);
                       Log.d("val:",selectedFromList.getDate());
                       Log.d("val:",selectedFromList.getMobile_no());
                   }
               });

Радоваться, веселиться!

person Debasish Ghosh    schedule 30.03.2017

person    schedule
comment
значение коррекции = значение.подстрока(значение.indexOf(имя=)+5, значение.длина()-1); - person Pragnani; 18.01.2013
comment
Хорошо, решено, спасибо за sugandha, Pragnani и RobinHood. моя проблема решена исправлением Pragni, до этого в последней строке есть }. Хорошо спасибо. - person Dave Jackson; 18.01.2013
comment
Мой вопрос, что такое +5?. Я знаю, что будущее за этой функцией. Спасибо - person Dave Jackson; 18.01.2013

person    schedule
comment
Привет, друзья, этот код может помочь вам получить результат - person Ankit Neema; 05.06.2015
comment
Есть ли способ получить исходный идентификатор в списке? Все, что я получаю, это имя вещи в строке. заранее спасибо - person Riekelt; 21.09.2015