【问题标题】:Listadapter show only last value of array in android?Listadapter仅显示android中数组的最后一个值?
【发布时间】:2016-05-23 11:18:40
【问题描述】:

伙计们,我正在开发一个 android 项目。我想在一个列表中显示 5 个项目,但我只有数组的最后一项,基本上这个数组来自 JSONarray。我怎么解决这个问题?这是我的主要活动课

       try {
             Log.d("hy one ","two");
             //JSONObject jobj=new JSONObject(data1);
             JSONArray jr=new JSONArray(data1);              
             for (int i=0;i<jr.length();i++) {
                 jsonObject = jr.getJSONObject(i);
                 like = jsonObject.getString(like_count);
            }
            JSONArray jsonArray3=jsonObject.getJSONArray("comments");
            HashMap<String, String> arr;
            for(int j=0;j<jsonArray3.length();j++){
            arr = new HashMap<>();
            JSONObject jsonObject3 = jsonArray3.getJSONObject(j);
            name11=jsonObject3.getString(name1);
            Log.d("name value",name11);

            arr.put("name",name11);
            arrayList.add(arr);
        }
        Log.d("arraylist", String.valueOf(arrayList));

  } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}
@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    progressDialog.dismiss();
    /*list_adapter=new list_adapter(Dashboard.this);
    listcomment.setAdapter(listAdapter);*/
    adapter= new Dashboard_Adapter(Dashboard.this,arrayList);
   // Log.d("adapter", String.valueOf(adapter));

    listview.setAdapter(adapter);
}

这是我的适配器

public class Dashboard_Adapter extends BaseAdapter {
    ViewHolder viewHolder;
    SharedPreferences sharedPreferences;
    private LayoutInflater layoutInflater = null;
   // ArrayList<String> arr;
    private Activity activity;
    public Context context;
    HashMap<String, String> arr;
    ArrayList<HashMap<String, String>> arrayList;
    public Dashboard_Adapter(Context dashbord, ArrayList<HashMap<String, String>> arrayList) {
        activity = (Activity) dashbord;
      this.arrayList=arrayList;
        layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        sharedPreferences = activity.getSharedPreferences(Login.My_Prefs, Context.MODE_PRIVATE);
    }

    @Override
    public int getCount() {
        return arrayList.size();
       // Log.d("arraysize",arrayList.size());

    }

    @Override
    public Object getItem(int position) {
        return arrayList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        View view = convertView;
        final ViewHolder viewHolder;
        if (convertView == null) {
            view = layoutInflater.inflate(R.layout.omments, parent, false);
            viewHolder = new ViewHolder();
            viewHolder.Name = (TextView) view.findViewById(R.id.txtTags23);

            //comment
           // viewHolder.btnPromote = (Button) view.findViewById(R.id.btnFeedResponce);

            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        arr = new HashMap<>();
        arr = arrayList.get(position);

        viewHolder.Name.setText(Dashboard.name11);




        return view;
        // Glide.with(context).load(images).placeholder(R.drawable.home).into(imageView);
    }

    public static class ViewHolder {
        TextView Name;


    }

}

我认为问题出在适配器上。

提前感谢:)

【问题讨论】:

  • 在 onPostExecute() 将它提供给适配器之前,您是否使用日志检查了 arrayList 的大小?
  • 将所有解析代码移入for (int i=0;i&lt;jr.length();i++) {循环。
  • 是的,我查过了。所有值都存在于数组列表中,但未显示在最终结果中
  • 我把所有的代码都移到了循环内,但还是同样的问题
  • 在此处更新您的代码

标签: android performance android-layout listview android-studio


【解决方案1】:
 JsonObject jsonObject = New JsonObject();

for循环内部

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多