Получите одно поле из списка ListView с несколькими столбцами, используя SimpleAdapter

У меня есть ListActivity, в котором я использовал SimpleAdapter для создания списка с двумя полями. Пара значений хранится с использованием Map, а список представляет собой ArrayList. Для этого у меня есть onItemClickListener. При выборе записи в списке я получаю пару, т.е. 2 значения. Мне нужно получить только 1 из этих значений.

Например, если элемент списка "Джон", "123" . Я хочу сохранить "123" в строке после выбора записи из списка Любая помощь?

Вот фрагмент кода:

        ListView lv = getListView();
        ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();

        list.add(putData(scanned_name, scanned_addr));

        String[] from = { "name", "address" };
        int[] to = { android.R.id.text1, android.R.id.text2 };

        SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), list,
                android.R.layout.simple_list_item_2, from, to);
        setListAdapter(adapter);

        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 


                Toast.makeText(getApplicationContext(),
                        parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
            }

        });

person Alabhya    schedule 04.04.2012    source источник


Ответы (1)


Вы должны поймать содержимое android.R.id.text1 или android.R.id.text2. Итак, в вашем onItemClick(...) вы должны сделать:

TextView v = (TextView)findViewById(R.id.text1);
TextView v1 = (TextView)findViewById(R.id.text2);
String content1=v.getText().toString();< br> Строка content2=v2.getText().toString();

и вы можете управлять ими, как хотите, даже внутри Toast:

Toast.makeText(getApplicationContext(),v.getText().toString(),Toast.LENGTH_LONG).show();

person Ant4res    schedule 04.04.2012
comment
Спасибо. Работал хорошо. Просто, поскольку я использовал предопределенный макет simple_list_item_2, он должен быть TextView v = (TextView)findViewById(android.R.id.text1); TextView v1 = (TextView)findViewById(android.R.id.text1); - person Alabhya; 05.04.2012