Android使用2个不同的ArrayLists填充相同的自定义列表视图布局

时间:2017-03-17 12:35:59

标签: java android arrays listview

我是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中,但这就解决了我的问题。

谢谢精灵,我知道这是一个愚蠢的问题。新秀在这里犯了错误。

2 个答案:

答案 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)