【问题标题】:Android populate the same custom listview layout with 2 different ArrayListsAndroid 使用 2 个不同的 ArrayLists 填充相同的自定义列表视图布局
【发布时间】:2017-03-17 21:00:23
【问题描述】:

我是 android 新手,需要帮助。我找不到解释我要问什么的链接,这就是我在这里问的原因。

我有一个只有一种布局的列表视图。

我的 customLayout 有一些文本视图和图像,所有这些都是我从一个 json 对象中的 2 个 jsonArrays 获得的。

文本1 文本2 图像1

我想从 2 个不同的数组列表中填充此布局。

我从我的 web 服务上的 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 数组放在同一个数组列表中。

由于一个菜鸟的错误,我认为我不应该将两个 JSONArray 混合到同一个 ArrayList 中,但这解决了我的问题。

谢谢巫师,我知道这是个愚蠢的问题。这里是菜鸟的错误。

【问题讨论】:

  • 为什么不能在从服务器接收到列表后,直接合并列表中的数据?
  • 您可以将两个数组列表合并到一个数组列表中,并将其用于您的自定义列表视图
  • 没错,做一个arrayList
  • 它们来自 2 个不同的 json 数组。我可以将两者放在同一个 ArrayList 中吗?
  • 那又怎样?将arrayList2 的项放入arrayList1。你想让我看看你是怎么做到的吗?

标签: java android arrays listview


【解决方案1】:

我会加入这两个数组。

for (Example item: arrayList2)
{
    arrayList1.add(item)
}

如果你需要为每个数组项显示不同的数据,在加入的时候我会放一个属性来区分,输入:

for (Example item: arrayList2)
{
   item.setIsArrayList2(true)
    arrayList1.add(item)
}

它适用于适配器,您可以在其中显示两者等等。

一个提示:使用 optString 而不是 getString 以防止 JSONException 为 null

【讨论】:

  • 感谢您的回答。尽管向导回答得很好,但您的回答是等效且有帮助的。我很感激。
【解决方案2】:

看来你的两个arrayList 有相同的Pojo..

你可以做的是在设置适配器之前合并两个arrayList并将数据保存在一个arrayList中;

你可以这样做 -

arraList1.addAll(arraList2)

【讨论】:

  • 谢谢先生。我知道这是一个愚蠢的问题,但我对将 2 个名称不同但内容相同的 jsonArrays 放在一个 ArrayList 中感到困惑。我认为我不应该这样做是有原因的,但这是一个菜鸟的错误。再次感谢。
  • 这就是 StackOverFlow 的用途 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
相关资源
最近更新 更多