获取列表视图文本的ID或位置

时间:2017-02-16 22:18:50

标签: android listview

当我使用ClickListener

时,我的Listview有3个textviews存在问题
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  ...
}

我无法找到点击的文字视图。

当我使用onClick-Method with

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

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

我知道点击了哪个textview但我无法获取id(数据库ID)。

我读过并试过但没有成功。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

项目点击监听器中的int位置是从0,1,2,3开始的文本视图的位置

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 :(得分:1)

如果我在这里了解你的问题:

  • 如果您的数据库表中有数据,则只需创建一个这样的类:

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

现在,当您向适配器提供数据时,会向每个对象实例传递一个id;

接下来,当用户点击列表中的项目时,您可以使用position界面提供给您的onClickListener来获取Adapter中的项目,然后获取id如你所愿!

我希望这有意义并帮助您获得解决方案!

答案 2 :(得分:1)

您可以使用光标来查找id,使用onClickListener返回的位置。

(...)

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

(...)

您需要使用变量db连接数据库。

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

答案 3 :(得分:0)

使用适配器的getView方法的onClick和位置

int itemPosition = -1;

现在在getView方法中设置itemPosition

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