Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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 填充listview时遇到问题_Java_Android_Listview_Android Listview_Adapter - Fatal编程技术网

Java 填充listview时遇到问题

Java 填充listview时遇到问题,java,android,listview,android-listview,adapter,Java,Android,Listview,Android Listview,Adapter,我正在尝试用自定义对象填充listview。我正在使用 使用listview类的适配器。下面是我用来使用适配器的代码 adapter = new SearchListAdapter(this, values); expListView = (ListView) findViewById(R.id.SearchList); setListAdapter(adapter); 在SearchListAdapter类中,我有以下代码: public class SearchLi

我正在尝试用自定义对象填充listview。我正在使用 使用listview类的适配器。下面是我用来使用适配器的代码

    adapter = new SearchListAdapter(this, values);
    expListView = (ListView) findViewById(R.id.SearchList);
    setListAdapter(adapter);
在SearchListAdapter类中,我有以下代码:

public class SearchListAdapter extends ArrayAdapter<String>
{
    private Context context;
    private ArrayList<String> values;
    public SearchListAdapter(Context context, ArrayList<String> UsernameValues) {
        super(context, R.layout.search_contact, UsernameValues);
        this.context = context;
        this.values = UsernameValues;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        LayoutInflater inflater = (LayoutInflater) this.context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.search_contact, parent, false);

        TextView textView = (TextView) rowView.findViewById(R.id.firstLine);
        for(String Index : values)
        {
            textView.setText(Index);
        }
        return rowView;
    }
}
公共类SearchListAdapter扩展了ArrayAdapter
{
私人语境;
私有数组列表值;
公共SearchListAdapter(上下文上下文,ArrayList用户名值){
super(上下文、R.layout.search\u联系人、用户名值);
this.context=上下文;
this.values=用户名值;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
LayoutInflater充气器=(LayoutInflater)this.context
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.search\u contact,parent,false);
TextView TextView=(TextView)rowView.findViewById(R.id.firstLine);
for(字符串索引:值)
{
setText(索引);
}
返回行视图;
}
}
我可以看到setListAdapter正在工作(我假设),因为它正在将信息传递给SearchListAdapter,但是当getView尝试填充列表时,它只是在列表中的每个元素中输入ArrayList中的最后一个字符串值。为了使每个元素都对应于ArrayList中的一个值,我缺少了什么?谢谢你的帮助

您的代码

for(String Index : values)
{
    textView.setText(Index);
}
实际上是在您的完整数据
列表上迭代,并在每次迭代时设置每个值。因此,在最后一次迭代之后,每个
textView
都会保留适配器备份
列表中的最后一个值

您需要的是只设置与
UsernameValues
列表中
ListView
的当前行
位置相对应的值

textView.setText(values.get(position));