Java 填充listview时遇到问题
我正在尝试用自定义对象填充listview。我正在使用 使用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
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));