当我使用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)。
我读过并试过但没有成功。
有什么想法吗?
答案 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
}