【发布时间】: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<jr.length();i++) {循环。 -
是的,我查过了。所有值都存在于数组列表中,但未显示在最终结果中
-
我把所有的代码都移到了循环内,但还是同样的问题
-
在此处更新您的代码
标签: android performance android-layout listview android-studio