我有一个活动和一个静态方法的抽象类。在这个方法中,我想在列表视图中渲染jsonArray。
这是活动
public class FeedActivity extends BaseActivity {
...
private void renderFeed(String data){
try {
JSONObject json = new JSONObject(data);
JSONArray d = json.getJSONArray("data");
RenderLists.renderFeed(d);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
}
这是静态方法。
abstract class RenderLists {
static void renderFeed(JSONArray data) throws JSONException{
ArrayList feedList1 = new ArrayList<HashMap<String, Object>>();
ListView feedList = (ListView) layout.findViewById(R.id.feedList); // This isn't working
for (int i = 0; i < data.length(); i++) {
HashMap<String, Object> hm;
hm = new HashMap<String, Object>();
hm.put("name", data.getJSONObject(i).getString("name").toString());
feedList1.add(hm);
FeedItemAdapter adapter = new FeedItemAdapter(FeedActivity.this, feedList1, R.layout.feed_list,
new String[] {"name"}, new int[] { R.id.feedCheckinName});
feedList.setAdapter(adapter);
feedList.setChoiceMode(feedList.CHOICE_MODE_SINGLE);
}
}
}
如何在静态方法中获取Activity和ListView?请解释一下。
答案 0 :(得分:0)
在运行时传递它们可能是您唯一合理的选择:
abstract class RenderLists {
static void renderFeed(JSONArray data, Activity act, ListView lv) throws JSONException{
...
}
}
即便如此,请记住除了UI线程之外无法更新view
。
如果这对您不起作用,那么您可能会遇到其他问题(内存泄漏,NPE等),尽管您可以使用班级setters
(但这样做&#39;很像上面那样。)