2017-02-16 2 views
1

ich ein Problem mit meinem Listview haben mit 3 Textviews, wenn ich einen clicklistener verwendenGet ID oder die Position des Listenansicht Text

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

Ich kann nicht herausfinden, welche Textview geklickt wird.

Und wenn ich eine onClick-Methode mit

<TextView 
    android:id="@+id/listview_text3" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:onClick="onClickMenge"/> 

und

public void onClickMenge(View view) { 
    ... 
} 

Ich weiß, das Textview geklickt wird, aber ich kann nicht die id (Datenbank-ID) erhalten.

Ich las und versuchte, aber ohne Erfolg.

Irgendwelche Ideen?

+0

So Ihre Listview ist eine benutzerdefinierte Listview gesetzt. Verwenden Sie Ihren eigenen Adapter dafür? –

+0

meinst du textview id? – fatmi

+0

Zuerst Elementposition holen: 'ListView # getPositionForView', dann Element-ID:' Adapter # getItemId' (ich gehe davon aus, dass Sie einen 'CursorAdapter' verwenden, damit' Adapter # getItemId' einen richtigen Wert liefert) – pskink

Antwort

1

Die int Position in der auf Klick Hörer Punkt ist die Position der ur Text sehen sie aus 0,1,2,3

beginnt
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      if(pos==0) 
      { 
      TextView txt = (TextView) findViewById(R.id.text_1); 
      txt.setText("abc"); 
      } 
    } 
}); 
1

Wenn ich Ihre Frage verstehen hier:

  • Wenn Sie Daten in Ihrer Datenbank-Tabellen haben, müssen Sie einfach eine Klasse wie folgt erstellen:

    public class ListItem { 
        //define variables here 
        private long id; 
        private String itemName; 
    
        //define constructor and getters and setters here; 
    } 
    

Wenn Sie nun die Daten an Ihren Adapter übergeben, übergeben Sie an jede Objektinstanz eine ID;

Als nächstes, wenn ein Benutzer klickt auf den Eintrag in der Liste, können Sie die position Ihnen präsentiert von der Schnittstelle onClickListener bereitgestellt verwenden, um das Element aus Ihrer Adapter erhalten dann die id erhalten, wie Sie wollen!

Ich hoffe, das macht Sinn und hilft Ihnen, die Lösung zu bekommen!

1

Sie können Ihren Cursor verwenden, um die ID zu finden, indem Sie die Position verwenden, die onClickListener zurückgibt.

(...)

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    String[] column = new String[]{"_id"}; 
    Cursor cursor = db.query("name_of_table", column, null, null, null, null, null, null); 
    cursor.move(position+1); 
    long id = cursor.getLong(0); 

(...)

Sie benötigen eine Datenbank mit variablen db zu verbinden.

private SQLiteDatabase db; 
BDCore xDB = new BDCore(context); 
db = xDB.getWritableDatabase(); 
0

Verwenden onClick und Position von getView Methode des Adapters

int itemPosition = -1;

Jetzt itemPosition in getView Methode

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    itemPosition = position; 
} 

public void onClickMenge(View view) { 

     int viewId = view.getId();//ID of text view clicked 
     //Use itemPosition now 
} 
Verwandte Themen