[英]Loading new LazyAdapter from existing LazyAdapter
好的,我們開始。 我提供了完整的模型,以避免出現疑問,為什么您不采用這種方式或這種方式。.因此,藍色框只是可膨脹的標頭起作用,在藍色標頭下方,我有一個用LazyAdapter填充的帶有ListView(綠色)的Activity。 每行(白色)都有按鈕,這些按鈕在單擊時會打開對話框(黃色),其中另一個列表視圖填充了LazyAdapterTwo(黑色)。
問題是從第一個設置第二個適配器時出現空異常,所以我不知道問題出在哪里:listStatusComments.setAdapter(adapterStatusComments);
LazyAdapterStatus類
public class LazyAdapterStatus extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
ProgressDialog progressDialog;
DatabaseHandler db = new DatabaseHandler(activity);
ListView listStatusComments;
LazyAdapterStatusComments adapterStatusComments;
public LazyAdapterStatus(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.activity_main_list_row, null);
final Dialog dialog = new Dialog(activity);
TextView title = (TextView)vi.findViewById(R.id.activityStatus);
ImageButton comments = (ImageButton)vi.findViewById(R.id.comments_ico);
comments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
HashMap<String, String> item = new HashMap<String, String>();
item = data.get(position);
dialog.setContentView(R.layout.dialog_status_comment);
dialog.setTitle("Comment");
String statusId = item.get(MainActivity.STATUS_ID);
new GetStatusCommentsTask().execute(statusId);
}
});
HashMap<String, String> item = new HashMap<String, String>();
item = data.get(position);
title.setText(item.get(MainActivity.STATUS_TEXT));
return vi;
}
public class GetStatusCommentsTask extends AsyncTask<String, Void, ArrayList<StatusComments>> {
protected void onPreExecute() {
progressDialog = new ProgressDialog(activity);
progressDialog.setMessage("Loading");
progressDialog.setCancelable(true);
progressDialog.show();
}
protected ArrayList<StatusComments> doInBackground(String... arg0) {
String response = null;
try {
try {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
HttpConnectionParams.setSoTimeout(httpParameters, 20000);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpPost postReq = new HttpPost();
postReq.setURI(new URI(com.seventy.in.util.ClientUrls.GET_STATUS_COMMENTS_URL));
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair(
"status_id", arg0[0]));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
postParameters);
postReq.setEntity(formEntity);
HttpResponse httpResponse = client.execute(postReq);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
response = NetworkUtil
.convertStreamToString(httpResponse.getEntity()
.getContent());
Log.i("RESP", response);
}
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (response != null && response != "") {
JSONObject myAwway = new JSONObject(response);
JSONArray jsonArrComments = myAwway.getJSONArray("status_comments");
ArrayList<StatusComments> commentsList = new ArrayList<StatusComments>();
for (int i = 0; i < jsonArrComments.length(); i++) {
StatusComments comment = StatusComments.fromJson(jsonArrComments
.getJSONObject(i));
if (comment.getCommentUserId() != null) {
commentsList.add(comment);
}
}
return commentsList;
}
else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(ArrayList<StatusComments> result) {
super.onPostExecute(result);
progressDialog.dismiss();
final Dialog dialog = new Dialog(activity);
dialog.setContentView(R.layout.dialog_status_comment);
dialog.setTitle("Patka");
final ArrayList<HashMap<String, String>> postList = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < result.size(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
StatusComments e = result.get(i);
map.put(MainActivity.COMMENT_USER_ID, e.getCommentUserId());
map.put(MainActivity.KEY_IMAGE_URL, e.getUserImageUrl());
map.put(MainActivity.STATUS_TEXT, e.getCommentText());
postList.add(map);
}
listStatusComments = (ListView)dialog.findViewById(R.id.list);
adapterStatusComments=new LazyAdapterStatusComments(activity, postList);
listStatusComments.setAdapter(adapterStatusComments);
}
}
}
LazyAdapterStatusComments
public class LazyAdapterStatusComments extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapterStatusComments(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.friends_list_row, null);
TextView title = (TextView)vi.findViewById(R.id.name); // title
TextView about = (TextView)vi.findViewById(R.id.item_description); // artist name
ImageView thumb_image=(ImageView)vi.findViewById(R.id.image_url); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(MainActivity.STATUS_TEXT));
imageLoader.DisplayImage(song.get(MainActivity.KEY_IMAGE_URL), thumb_image);
return vi;
}
}
我發現了問題。 代碼完美運行,只有我忘記將列表元素輸入到xml布局中,因此listStatusComments =(ListView)dialog.findViewById(R.id.list); 正在尋找不存在的元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.