Android 获取listview文本的ID或位置

Android 获取listview文本的ID或位置,android,listview,Android,Listview,当我使用ClickListener时,我的Listview与3个文本视图有问题 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ... } 我知道单击了哪个textvi

当我使用ClickListener时,我的Listview与3个文本视图有问题

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  ...
}
我知道单击了哪个textview,但无法获取id(数据库id)

我读了又试,但没有成功


有什么想法吗?

单击项目侦听器中的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");
          }
     }
});
listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==0)
{
TextView txt=(TextView)findViewById(R.id.text_1);
txt.setText(“abc”);
}
}
});

如果我理解您的问题:

  • 如果数据库表中有数据,只需创建如下类:

    public class ListItem {
       //define variables here
       private long id;
       private String itemName;
    
       //define constructor and getters and setters here;
    }
    
现在,当您向适配器提供数据时,向每个对象实例传递一个id

接下来,当用户单击列表中的项目时,您可以使用
onClickListener
界面提供给您的
位置
,从
适配器中获取项目
,然后根据需要获取
id


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

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

(……)


使用适配器的onClick和positionfromGetView方法

intitemPosition=-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
 }

因此,您的ListView是一个自定义ListView。您使用自己的适配器吗?您是指textview id吗?首先获取项目位置:
ListView#getPositionForView
,然后获取项目id:
adapter#getItemId
(我假设您使用的是
CursorAdapter
,因此
适配器#getItemId
返回正确的值)谢谢@pskink。太容易了!;-)当然,不客气
public class ListItem {
   //define variables here
   private long id;
   private String itemName;

   //define constructor and getters and setters here;
}
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);
private SQLiteDatabase db;
BDCore xDB = new BDCore(context);
db = xDB.getWritableDatabase();
@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
 }