我是android的新手,我需要帮助。我无法找到一个链接来解释我要问的问题,这就是我在这里问的原因。
我有一个带有一个布局的列表视图。
我的customLayout有一些文本视图和图像,所有这些都来自一个json对象中的2个jsonArrays。
TEXT1 TEXT2 IMAGE1
我想从2个不同的数组列表中填充此布局。
我从我的webservice上的2个jsonArrays获取这个数组列表。
我的班级很简单,就像这样:
public class Example{
private String text;
private String text2;
private String imageLink;
Constructor...
Getter and Setter...
}
我可以将ArrayList1的值放在customLayout中,但不能放入ArrayList2的值。
像这样:
public class CustomListAdapterStreams extends ArrayAdapter<StreamsData> {
ArrayList<MyClass> ArrayList;
ArrayList<MyClass> ArrayList2;
Context context;
int resource;
public CustomListAdapterStreams(Context context, int resource, ArrayList<MyClass> ArrayList, ArrayList<MyClass> ArrayList2;) {
super(context, resource, ArrayList);
this.ArrayList= ArrayList;
this.context = context;
this.resource = resource;
this.ArrayList2= ArrayList2;
}
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null){
LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.activity_custom_list_adapter, null);
}
MyClass myclass= ArrayList.get(position);
String getUsername = myclass.getUsername();
String quality = myclass.getQuality();
TextView txtUsername = (TextView) convertView.findViewById(R.id.txtUsername);
txtUsername.setText(getUsername);
and so on
所以我需要了解如何在相同的视图中,在相同的视图中,使用不同的值来放置相同的自定义布局。就像Array List 1没有任何内容一样,使用Array List 2的值填充列表的其余部分。
修改
答案说我应该将两个json数组放在同一个arraylist中。
由于一个rookir的错误,我认为我不应该将两个JSONArrays混合到同一个ArrayList中,但这就解决了我的问题。
谢谢精灵,我知道这是一个愚蠢的问题。新秀在这里犯了错误。
答案 0 :(得分:2)
我会加入这两个阵列。
for (Example item: arrayList2)
{
arrayList1.add(item)
}
如果您需要为每个数组项显示不同的数据,在加入时我会将属性设置为区分,请键入:
for (Example item: arrayList2)
{
item.setIsArrayList2(true)
arrayList1.add(item)
}
它适用于你可以展示两者的适配器等等。
一个提示:使用 optString 而不是 getString ,以便在它出现空值时不会获得JSONException
答案 1 :(得分:1)
似乎你的两个arrayList
有相同的Pojo
..
您可以做的是合并两个arrayList
并在设置适配器之前将数据保存在一个arrayList
中;
以下是如何做到这一点 -
arraList1.addAll(arraList2)