Android 如何从ListView中的单个项toast特定的文本ID
我正在尝试开发一款安卓应用程序,但我目前遇到了一些问题 我使用的自定义listview如下所示:Android 如何从ListView中的单个项toast特定的文本ID,android,listview,rowid,onitemclick,Android,Listview,Rowid,Onitemclick,我正在尝试开发一款安卓应用程序,但我目前遇到了一些问题 我使用的自定义listview如下所示: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_conte
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="10dp"
android:paddingBottom="10dp" >
<TextView
android:id="@+id/name"
style="@style/..."/>
<TextView
android:id="@+id/number"
android:layout_below="@+id/..."
style="@style/..." />
<TextView
android:id="@+id/id"
android:layout_below="@+id/..."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible" />
</RelativeLayout>
这里的ID从我的SQLite数据库中获取他们的文本,在那里我通过Contacts表进行查询
现在,我希望在单击listview中显示的项目时发生一些事情。点击已注册,但现在我想要一个只显示传递到ID中的数字(每行的主键)的Toast
我不能使用arrayindex+1,因为我没有按id排序查询
这是我的McClick:
contactList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(Contacts.this,"My unique rowID should be presented here.",
Toast.LENGTH_SHORT).show();
}
});
contactList.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
Toast.makeText(Contacts.this,“我唯一的rowID应该在这里显示。”,
吐司。长度(短)。show();
}
});
我将唯一的ID发送到textview,因为我相信这会使单击特定项目时提取该信息更容易
我的基本适配器:
public class ListViewCustomAdapter extends BaseAdapter {
public ArrayList<String> name;
public ArrayList<String> number;
public ArrayList<String> id;
public Activity context;
public LayoutInflater inflater;
public ListViewCustomAdapter(Activity context,
ArrayList<String> name, ArrayList<String> number, ArrayList<String> id) {
// TODO Auto-generated constructor stub
super();
this.context = context;
this.name = name;
this.number = number;
this.id = id;
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return name.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int id) {
return id;
}
public class ViewHolder {
TextView txtViewName;
TextView txtViewNumber;
TextView txtViewId;
}
public View getView(int position, View convertview, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertview == null) {
holder = new ViewHolder();
convertview = inflater.inflate(R.layout.listview_row, null);
holder.txtViewName = (TextView) convertview
.findViewById(R.id.name);
holder.txtViewNumber = (TextView) convertview
.findViewById(R.id.number);
holder.txtViewId = (TextView) convertview
.findViewById(R.id.id);
convertview.setTag(holder);
} else {
holder = (ViewHolder) convertview.getTag();
}
holder.txtViewName.setText(name.get(position));
holder.txtViewNumber.setText(number.get(position));
holder.txtViewId.setText(id.get(position));
return convertview;
}
}
公共类ListViewCustomAdapter扩展了BaseAdapter{
公共数组列表名;
公共阵列列表编号;
公共阵列列表id;
公共活动语境;
公共场所;充气机;
公共ListViewCustomAdapter(活动上下文,
ArrayList名称、ArrayList编号、ArrayList id){
//TODO自动生成的构造函数存根
超级();
this.context=上下文;
this.name=名称;
这个数字=数字;
this.id=id;
this.inflater=(LayoutInflater)上下文
.getSystemService(上下文布局\充气机\服务);
}
public int getCount(){
//TODO自动生成的方法存根
返回name.size();
}
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回null;
}
公共长getItemId(int id){
返回id;
}
公共类视图持有者{
TextView txtViewName;
TextView txtViewNumber;
TextView-txtViewId;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视窗座;
if(convertview==null){
holder=新的ViewHolder();
convertview=充气机。充气(R.layout.listview_行,空);
holder.txtViewName=(TextView)convertview
.findviewbyd(R.id.name);
holder.txtViewNumber=(TextView)convertview
.findViewById(R.id.number);
holder.txtViewId=(TextView)convertview
.findviewbyd(R.id.id);
convertview.setTag(支架);
}否则{
holder=(ViewHolder)convertview.getTag();
}
holder.txtViewName.setText(name.get(position));
holder.txtViewNumber.setText(number.get(position));
holder.txtViewId.setText(id.get(position));
返回视图;
}
}
任何帮助都将不胜感激
现在我想要一个吐司,它只显示传递到ID中的数字(每行的主键)
如果您希望数据库中的主键(取决于适配器),则它应该是传递给onItemClick()的id
参数:
(如果在您的上下文中有意义,您甚至可以将容器类型从ArrayList
更改为ArrayList
。这是每个listview元素的xml吗?是的。我的主键目前正在传递到@+id/id。因此,第一个项目将获得1,第二个项目将获得2,第三个项目将获得3等。如果我通过联系人订购,我现在也添加了适配器。当我使用getId并返回id时,它会给我ArrayList索引。
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Use id
Toast.makeText(Contacts.this, id + "",Toast.LENGTH_SHORT).show();
// Or you can find it yourself
TextView idTV = (TextView) view.findViewById(R.id.id);
Toast.makeText(Contacts.this, idTV.getText().toString(),Toast.LENGTH_SHORT).show();
}
public long getItemId(int position) {
return Long.parseLong(id.get(position));
}