单击列表视图时获取ID值
Getting ID value when clicking on listview
我在单击列表视图时无法获取正确的 ID 值。
我制作了一个自定义适配器,因为我是从 SQLite 数据中绘制的,我得到了正确的文本,但是当我点击一行时,我得到了一个 0 索引 ID,这不是我想要的。
我也在使用 Sugar ORM,所以我不确定这是否需要我做一些特殊的工作来获取 id 字段。
我不确定我应该向您展示什么代码,所以无论您认为对您有什么帮助,请告诉我,我会post。
谢谢
BoardArrayAdapter adapter = new BoardArrayAdapter(this, boards);
setListAdapter(adapter);
ListView lv = getListView();
registerForContextMenu(lv);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "Board ID " + id, Toast.LENGTH_SHORT).show();
}
});
您需要覆盖适配器中的 getItemId()
方法。
根据 SugarORM 文档,您可以调用 getid()
到 return 数据库 ID。
ArrayList<Object> data;
@Override
public long getItemId(int position) {
return data.get(position).getid();
}
这就是我在我的项目中使用的方式(使用 SQLite 和 CustomListView)。
获取数据方法
public void getData(View view, long id)
{
//storing the ID into a public static variable and converting to int
CLIENTE_ID = (int)id;
//When the user touches on the field in the listview, I get the touched field's name and email
TextView textViewnome = (TextView) view.findViewById(R.id.tv_cliente_nome);
TextView textViewemail = (TextView) view.findViewById(R.id.tv_cliente_email);
//Stores both name and email of the touched field
String nome = textViewnome.getText().toString();
String email = textViewemail.getText().toString();
//store into static variable
CLIENTE_NOME = nome;
CLIENTE_EMAIL = email;
}
在 onCreate 中:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
getData(view, id);
Log.d("myClass", "ID: " + view.getId());
}
});
希望对您有所帮助! :)
我在单击列表视图时无法获取正确的 ID 值。
我制作了一个自定义适配器,因为我是从 SQLite 数据中绘制的,我得到了正确的文本,但是当我点击一行时,我得到了一个 0 索引 ID,这不是我想要的。
我也在使用 Sugar ORM,所以我不确定这是否需要我做一些特殊的工作来获取 id 字段。
我不确定我应该向您展示什么代码,所以无论您认为对您有什么帮助,请告诉我,我会post。
谢谢
BoardArrayAdapter adapter = new BoardArrayAdapter(this, boards);
setListAdapter(adapter);
ListView lv = getListView();
registerForContextMenu(lv);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "Board ID " + id, Toast.LENGTH_SHORT).show();
}
});
您需要覆盖适配器中的 getItemId()
方法。
根据 SugarORM 文档,您可以调用 getid()
到 return 数据库 ID。
ArrayList<Object> data;
@Override
public long getItemId(int position) {
return data.get(position).getid();
}
这就是我在我的项目中使用的方式(使用 SQLite 和 CustomListView)。
获取数据方法
public void getData(View view, long id)
{
//storing the ID into a public static variable and converting to int
CLIENTE_ID = (int)id;
//When the user touches on the field in the listview, I get the touched field's name and email
TextView textViewnome = (TextView) view.findViewById(R.id.tv_cliente_nome);
TextView textViewemail = (TextView) view.findViewById(R.id.tv_cliente_email);
//Stores both name and email of the touched field
String nome = textViewnome.getText().toString();
String email = textViewemail.getText().toString();
//store into static variable
CLIENTE_NOME = nome;
CLIENTE_EMAIL = email;
}
在 onCreate 中:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
getData(view, id);
Log.d("myClass", "ID: " + view.getId());
}
});
希望对您有所帮助! :)