ListViewアイテムを1つずつ追加しようとしています。つまり、60個のアイテムがある場合、アプリケーションは一度に1つずつリストビューにビューを追加します。したがって、アプリケーションがさらに多くのものをロードしていることをユーザーに示します。
これは私のコードです:
try {
JSONArray j = getTaggsJSON();
Log.v(TAG, String.valueOf(j.length()));
a = new createSpecialAdapter(this, R.layout.individual_tagg_view,
R.layout.list_item, view, j);
ListView v = this.getListView();
v.setStackFromBottom(true);
setListAdapter(a);
new addViewsToList().execute(j);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
private class addViewsToList extends AsyncTask<JSONArray, View, List<View>> {
protected List<View> doInBackground(JSONArray... jsonArrays) {
List<View> v = new ArrayList<View>();
Log.v(TAG, String.valueOf(jsonArrays[0].length()));
for (int x = 0; x < jsonArrays[0].length(); x++) {
try {
Log.v(TAG, jsonArrays[0].getJSONObject(x).toString());
v.add(ViewAdapter.createTaggView(jsonArrays[0]
.getJSONObject(x), c));
} catch (JSONException e) {
e.printStackTrace();
}
publishProgress(v.get(x));
}
return v;
}
protected void onProgressUpdate(View... v) {
Log.v(TAG, "I'm updating my progress!");
a.notifyDataSetChanged();
}
protected void onPostExecute(List<View> views) {
Log.v(TAG, "i'm done!");
Log.v(TAG, String.valueOf(views.size()));
}
}
したがって、私のコードはビューを正しく出力し、リストに正しく配置しているように見えますが、アクティビティには何も表示されません。私は何が間違っているのですか?リストにビューがない場合は、前にアダプターを設定してから、リストが変更されたことをアダプターに更新するのが正しい方法だと思いました。
私の質問について説明が必要な場合は、私に知らせてください。
編集:これが私の質問を補足するためのアダプターコードです。
private class SpecialAdapter extends ArrayAdapter<JSONArray> {
JSONArray json;
public SpecialAdapter(Context context, int textViewResourceId,
int listItem, JSONArray j) {
super(context, textViewResourceId);
this.json = j;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Log.v(TAG,"I'm inside the getView method.");
try {
JSONObject info = json.getJSONObject(position);
Log.v(TAG,info.toString());
if (convertView == null) {
LayoutInflater i = (LayoutInflater) RecentTaggs.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = i.inflate(R.layout.individual_tagg_view, parent,
false);
holder = new ViewHolder();
holder.username = (TextView) convertView
.findViewById(R.id.userName);
holder.review = (TextView)convertView.findViewById(R.id.review_text);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.review.setText(info.getString("review"));
return convertView;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
私の出力はLog.vステートメントを出力せず、GetViewメソッド内でも出力されません。