Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于简单Android ListView问题的帮助_Java_Android_Arraylist_Android Listview - Fatal编程技术网

Java 关于简单Android ListView问题的帮助

Java 关于简单Android ListView问题的帮助,java,android,arraylist,android-listview,Java,Android,Arraylist,Android Listview,我是Android新手,所以这似乎是一个基本问题。但我得到的是一个非常简单的类,名为SingleItem,它有一个整数和一个字符串,每个都有一个getter和setter。在我的应用程序中,我得到了一个ArrayList,其中包含一组SingleItem对象。我还有一个带有ListView小部件的布局 我试图用SingleItem中的字符串值填充ListView,但是当用户从ListView中选择一个项目时,我需要该SingleItem值的整数ID。在Android开发中如何实现这一点?如果您使

我是Android新手,所以这似乎是一个基本问题。但我得到的是一个非常简单的类,名为SingleItem,它有一个整数和一个字符串,每个都有一个getter和setter。在我的应用程序中,我得到了一个ArrayList,其中包含一组SingleItem对象。我还有一个带有ListView小部件的布局


我试图用SingleItem中的字符串值填充ListView,但是当用户从ListView中选择一个项目时,我需要该SingleItem值的整数ID。在Android开发中如何实现这一点?

如果您使用自己的适配器填充列表,那么在构建要返回的视图时,在getView()函数中,您可以调用要返回的视图并存储整个“SingleItem”对象。然后,在返回的视图的onClickListener中,可以使用已单击视图的getTag()方法检索信息

编辑:
指定我所指的onClickListener这里有一堆伪代码:创建自己的适配器。这将提供执行各种操作的灵活性,但对您来说重要的是,这里只显示自定义类中的相关字段,并生成更复杂的ListView。这里有一个不错的教程:

您将必须处理baseadapter的其他重写,但密钥正在分配singleItem.getString()的值

公共类SingleItemAdapter扩展了BaseAdapter{
private ArrayList mu items=new ArrayList();
私有上下文;
公共SingleItemAdapter(上下文c、ArrayList项){
mContext=c;
m_项目=项目;
}
.
.
.
@凌驾
公共对象getItem(int arg0){
返回m_items.get(arg0);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutFlater vi=(LayoutFlater)mContext
.getSystemService(上下文布局\充气机\服务);
v=vi.充气(R.layout.singleitemview,null);
}
SingleItem i=(SingleItem)getITem(位置)
如果(v!=null){
TextView tv=(TextView)v.findViewById(R.id.yourListItemView);
tv.setText(i.getStringValue());
}
}
}
定义自定义适配器后,可以将其分配给listview,并将侦听器分配给OnItemSelectedListener。因为这会返回位置,所以可以将其绑定回SingleItems的ArrayList中的位置

.
.
.
SingleItemAdapter sia=new SingleItemAdapter(this,yourArray);
yourArrayList.setAdapter(sia);
yourArrayList.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long row) {
          SingleItem si= yourArray.getItem(position);
           //do something with si.getValue();

}

.
.
.

});
。
.
.
SingleItemAdapter sia=新的SingleItemAdapter(这是您的数组);
yourArrayList.setAdapter(sia);
yourArrayList.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView父视图、视图v、整型位置、长行){
SingleItem si=yourArray.getItem(位置);
//使用si.getValue()执行某些操作;
}
.
.
.
});

提供工作代码片段不是人们学习jk的方式。正确的方法是给他们一些解释,然后是一些代码片段,任何人都可以查找示例。。但只有少数人会理解这一点。然后由程序员来学习调整他们正在使用的内容,并为其提供上下文。永远不要做一个复制粘贴的程序员,它会毁了你作为一个程序员。总是要问问题,不要只接受它是什么。明白了,说得好。我不认为这太复杂,可以为他指明正确的方向。我将用更多的颜色编辑这篇文章。谢谢,这是一个学习/疑难解答环境,而不是解决方案中心。谢谢你的否决票:P上次发布此答案的人的有趣评论:lol。。太多人质疑数据库,所以理解模块化是非常重要的。所以我创建了这个帖子来帮助澄清这个问题。然而;带解释的代码有很长的路要走。具体来说,我没有给他解决方案,而是给了他做他需要的事情的结构巨大的差异。onCLickListener用于选择整个listview。要为特定项目返回项目,应使用OnItemSelectedListeneroi I love downvotes。。。我在所有自定义适配器中使用1个onClickListener,在getView()函数中,我只需设置我构建的视图的onClickListener,并返回到适配器中的1个onClickListener()。这非常有效,因为我可以使用setTag()将所需的所有数据存储在对象中
.
.
.
SingleItemAdapter sia=new SingleItemAdapter(this,yourArray);
yourArrayList.setAdapter(sia);
yourArrayList.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, long row) {
          SingleItem si= yourArray.getItem(position);
           //do something with si.getValue();

}

.
.
.

});