Android 如何使ArrayAdapter在同一ListView中填充2个ArrayList
我想让两个长度相同的ArrayList出现在一个ListView中,如下所示 Word 1是一个应填充1 ArrayList的TextView,Word 2是另一个应填充不同ArrayList的TextView *这些是文本视图,不是按钮 ArrayList,Word 2是另一个ArrayList> 我的ArrayAdaptor应该是什么样子 如果这是一个重复,请给我一个链接 CustomArrayAdapter.java,在两侧显示相同的ArrayList,这不是我需要的Android 如何使ArrayAdapter在同一ListView中填充2个ArrayList,android,string,android-listview,arraylist,android-arrayadapter,Android,String,Android Listview,Arraylist,Android Arrayadapter,我想让两个长度相同的ArrayList出现在一个ListView中,如下所示 Word 1是一个应填充1 ArrayList的TextView,Word 2是另一个应填充不同ArrayList的TextView *这些是文本视图,不是按钮 ArrayList,Word 2是另一个ArrayList> 我的ArrayAdaptor应该是什么样子 如果这是一个重复,请给我一个链接 CustomArrayAdapter.java,在两侧显示相同的ArrayList,这不是我需要的 }好的,不使用重写方
}好的,不使用重写方法,只需执行以下操作:
TextView tv1 = (TextView) v.findViewById(R.id.rhymed_word);
TextView tv2 = (TextView) v.findViewById(R.id.generated_word);
tv1.setText(words1.get(position));
tv2.setText(words2.get(position));
return v;
根据您的描述,您希望显示一个ArrayList中的word1和另一个ArrayList中的word2。ArrayAdapter在您的情况下不起作用,因为每行有两个数组要显示。一种方法是从BaseAdapter派生类并实现getView。下面是类实现的一部分:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if(v == null) {
// Inflate a layout for your listview row
}
// Assuming the 2 arrays are words1 and words2
// Assuming the textviews are word1 and word2
word1.setText(words1[position]);
word2.setText(words2[position]);
return v;
}
@Override
public int getCount()
{
return words1.size();
}
我不确定我是否理解这个问题,你能详细说明一下吗?您是否只希望一个button.setText来自一个ArrayList,而另一个button2.setText来自另一个ArrayList?…因为该描述本身就是一种答案…或者它们只是文本视图。它们看起来像按钮,但无论哪种方式都应该是一样的。请看我对文章的修改。谢谢,好的,但是我的第一个问题呢?您是否希望左侧的文本视图来自一个ArrayList,右侧的文本视图来自每一行的不同ArrayList?您是否有xml或任何代码,或者您只是想要一个起点?添加了一些提供奇怪输出的代码。好的,我看到了困境。getView中的位置是项目所在的listView的位置。我会发一些代码谢谢!这就是解决办法。
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if(v == null) {
// Inflate a layout for your listview row
}
// Assuming the 2 arrays are words1 and words2
// Assuming the textviews are word1 and word2
word1.setText(words1[position]);
word2.setText(words2[position]);
return v;
}
@Override
public int getCount()
{
return words1.size();
}