4

Je développe une application dans laquelle j'ai créé une vue liste personnalisée comme:Android listview - Get texte de listview personnalisé

La vue liste code 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> 

Et le xml adaptateur est:

<?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> 

Le fichier .java de l'adaptateur est:

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; 
    } 
} 

Ensuite, j'ai mis sur le point cliquez auditeur sur liste comme:

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

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

J'ai ensuite utilisé onItemClickListener sur le point cliquez comme:

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

Ici, je reçois la valeur de la première vue de texte de listview personnalisé . Mais je veux aussi la valeur de la deuxième vue de texte. et si j'en ajoute plus alors comment obtenir des valeurs de cela.

S'il vous plaît me suggérer la façon de le faire.

+0

si certaines réponses ont aidé, s'il vous plaît les accepter si cette question montre wont comme sans réponse. –

+0

voir de multiples façons de getText de listView http://stackoverflow.com/a/28479593/3496570 – Nepster

Répondre

17

Essayez comme ça à l'intérieur ur OnItemClick

TextView text = (TextView) arg1.findViewById(R.id.urtextID); 
          ^^^^^^ 
String tEXT = text.getText().toString(); 
+0

cela montre toujours le premier texte de l'article, pas celui à la position de son cliqué – Raa

+0

arg1 c.-à-View variable est importante avez-vous mis à juste titre que dans votre implémentation ...? –

1

juste une version simplifiée de la réponse ci-dessus

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(); 
}