Android listview – получить текст пользовательского списка

Я разрабатываю приложение, в котором я создал собственное представление списка как:

XML-код просмотра списка выглядит следующим образом:

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="15dip"
    android:divider="#623b42"
    android:dividerHeight="0.5dip"
    android:cacheColorHint="#00000000"
    android:overScrollMode="never" >
</ListView>

И адаптер xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/textview_rupee_mlsaa"
        android:gravity="center_vertical"
        android:padding="15dip"
        android:textColor="@color/color_black"
        android:textSize="15sp"
        tools:ignore="SelectableText" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="60sp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical"
        android:padding="15dip"
        android:textColor="@color/color_black"
        android:textSize="15sp"
        tools:ignore="SelectableText" />

</RelativeLayout>

Файл адаптера .java:

public class ListAdapter extends ArrayAdapter<String> {
/** Global declaration of variables. As there scope lies in whole class. */
private Context context;
private String[] dataset1;  
private int[] dataset2;

    /** Constructor Class */
    public ListAdapter(Context context,String[] ListArray1, int[] ListArray2) {
        super(context,R.layout.list_adapter_layout,ListArray);
        this.context = context;
            this.dataset1= ListArray1;
            this.dataset2= ListArray2;
    }

    /** Implement getView method for customizing row of list view. */
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        // Creating a view of row.
        View rowView = inflater.inflate(R.layout.list_adapter_layout, parent, false);   

        TextView tv1 = (TextView)rowView.findViewById(R.id.textview1);      
        TextView tv2 = (TextView)rowView.findViewById(R.id.textview2);

        tv1.setText(data1[position]);       
        tv2.setText(""+data2[position]);

        return rowView;
    }
}

Затем я устанавливаю прослушиватель щелчка элемента в представлении списка как:

listView = (ListView) findViewById(R.id.listview);
listView.setOnItemClickListener(this);    

ListAdapter adapter = new ListAdapter(this,list1,list2);
listView.setAdapter(adapter);

Затем я использовал onItemClickListener для щелчка элемента как:

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
name = (String) arg0.getItemAtPosition(position);       
}

Здесь я получаю значение первого текстового представления пользовательского списка. Но я хочу также значение второго текстового представления. и если я добавлю больше, то как получить значения этого.

Пожалуйста, предложите мне способ сделать это.


person Manoj Fegde    schedule 20.03.2013    source источник
comment
если некоторые из ответов помогли, пожалуйста, примите их, чтобы этот вопрос не отображался как оставшийся без ответа.   -  person Marko Niciforovic    schedule 20.03.2013
comment
увидеть несколько способов получить текст спискаView stackoverflow.com/a/28479593/3496570   -  person AndroidGeek    schedule 12.02.2015


Ответы (3)


Попробуйте так внутри ur OnItemClick

TextView text = (TextView) arg1.findViewById(R.id.urtextID);
                           ^^^^^^
String tEXT = text.getText().toString();
person nidhi_adiga    schedule 20.03.2013
comment
это всегда показывает текст первого элемента, а не тот, в котором он щелкнул - person Raa; 12.01.2014
comment
arg1 т.е. переменная View важна, правильно ли вы указали это в своей реализации...? - person nidhi_adiga; 12.01.2014

просто упрощенная версия приведенного выше ответа

    public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    // code in the commented section works in case of normal single textView

    // TextView temp=(TextView) view; 
    // Toast.makeText(this,
    // temp.getText()+" is pressed "+position,Toast.LENGTH_SHORT
    // ).show();

    TextView temp = (TextView) view.findViewById(R.id.textView1);

    String str = temp.getText().toString();
    Toast.makeText(this,
            str + " is pressed " + position,
            Toast.LENGTH_SHORT).show();
}
person ahmed    schedule 12.08.2014

Попробуй это,

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
TextView textView = (TextView) arg1.findViewById(R.id.urtextID);
String text = textView.getText().toString();   
Log.d("TEXT", "Text is" + text);   
}

ответы выше такие же, как мой ответ.....

person sourab maity    schedule 28.10.2020