填充列表视图的问题

Posted

技术标签:

【中文标题】填充列表视图的问题【英文标题】:Trouble with populating listview 【发布时间】:2015-03-30 21:31:47 【问题描述】:

我正在尝试使用自定义对象填充列表视图。我正在使用 适配器使用 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;
    

我可以看到 setListAdapter 正在工作(我假设),因为它正在将信息传递给 SearchListAdapter,但是当 getView 尝试填充列表时,它只是在每个元素中输入 ArrayList 中的最后一个字符串值在列表中。我缺少什么让每个元素都对应于 ArrayList 中的一个值?任何帮助表示赞赏,谢谢。

【问题讨论】:

【参考方案1】:

你的代码

for(String Index : values)

    textView.setText(Index);

实际上是迭代您的完整数据List 并在每次迭代时设置每个值。因此,在最后一次迭代之后,每个 textView 都会在适配器的支持 List 中留下最后一个值。

您只需在UsernameValues 列表中设置与ListView 的当前行position 对应的值。

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

【讨论】:

以上是关于填充列表视图的问题的主要内容,如果未能解决你的问题,请参考以下文章

列表视图适配器实现

填充列表视图的问题

如何在片段中填充列表视图?

在列表视图中填充电话联系人时出错

填充:来自 json 的列表视图

填充数据源,列表视图绑定但显示 EmptyDataTemplate