Android, Custom ListAdapter получают TextView-Text - PullRequest
7 голосов
/ 12 ноября 2009

Я кодировал собственный адаптер и добавил его в свой ListActivity через ListView. Причина, по которой я написал собственный адаптер, заключается в том, что мне пришлось внести некоторые изменения в макет записей списка. В каждой записи списка у меня есть 3 TextViews.

<?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="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<TextView
    android:id="@+id/myNr"
    android:layout_width="40dip"
    android:layout_height="fill_parent"
    android:layout_marginRight="15dip"
    android:text="id" 
    android:textSize="25dip"
    android:background="#333333"
    android:gravity="center_horizontal"/>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/editor"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:text="Editor: " />
    <TextView
        android:id="@+id/date"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" 
        android:singleLine="true"
        android:ellipsize="marquee"
        android:text="Date: " />
</LinearLayout>

Следующее, что я сделал, было реализовать метод onListItemClick-Methode. После этого я реализовал onListItemLongClick - Listener со следующим кодом:

в Создании Активности, которую я добавил:

 registerForContextMenu(getListView());

Затем я добавил следующий метод:

Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){
         AdapterView.AdapterContextMenuInfo info;
         info = (AdapterView.AdapterContextMenuInfo) menuInfo;
            long id = getListAdapter().getItemId(info.position);
        }

где "id" - это индекс элемента в списке. Теперь я хочу получить текст texview с id = "myNr этого ListItem. Есть ли способ получить этот текст?

Ответы [ 12 ]

0 голосов
/ 13 ноября 2009

спасибо за вашу помощь, но я боюсь, что это все еще не работает. если я добавляю предложенную вами строку, она подчеркивает «getItemAtPosition» и говорит: - Метод getItemAtPosition (int) не определен для типа View -

Он предлагает преобразовать представление в AdapterView, чтобы оно выглядело следующим образом:

String s = ((TextView) ((AdapterView<ListAdapter>) view).getItemAtPosition(info.position)).getText();

Когда я запускаю это и делаю длинный щелчок по элементу, я получаю «ClassCastException»

0 голосов
/ 12 ноября 2009

Да, я тоже так думал.Но когда я реализую это, я просто получаю текст первого TextView в списке.Это означает, что я могу получить текст нужного TextView, но это всегда текст первой записи списка.Разве нет возможности указать запись longClickedList?

...