Я просто пытаюсь получить все твиты из определенного хэштега и отобразить их в виде списка на Android.У меня есть некоторый код, который не выдает никаких ошибок, но когда я запускаю приложение, Android просто неожиданно закрывается, я думаю, что это может быть, где большинство проблем лежат:
public ArrayList<Tweet> getTweets(String searchTerm, int page) throws JSONException {
String searchUrl = "http://search.twitter.com/search.json?q=@"
+ searchTerm + "&rpp=100&page=" + page;
ArrayList<Tweet> tweets = new ArrayList<Tweet>();
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(searchUrl);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = null;
try{
responseBody = client.execute(get, responseHandler);
}catch(Exception ex) {
ex.printStackTrace();
}
JSONObject jsonObject = null;
JSONParser parser=new JSONParser();
try {
Object obj = parser.parse(responseBody);
jsonObject=(JSONObject)obj;
}catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}
JSONArray arr = null;
try {
Object j = jsonObject.get("results");
arr = (JSONArray)j;
}catch(Exception ex){
Log.v("TEST","Exception: " + ex.getMessage());
}
for(int i = 0; i < arr.length(); i++) {
JSONObject t = (JSONObject) arr.get(i);
Tweet tweet = new Tweet(
t.get("from_user").toString(),
t.get("text").toString(),
t.get("profile_image_url").toString()
);
tweets.add(tweet);
}
return tweets;
}
Или когда код инициализирует
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.info_main_layout);
ArrayList<Tweet> tweets = null;
try {
tweets = getTweets("android", 1);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new UserItemAdapter(this, R.layout.info_layout, tweets));
}
public class UserItemAdapter extends ArrayAdapter<Tweet> {
private ArrayList<Tweet> tweets;
public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Tweet> tweets) {
super(context, textViewResourceId, tweets);
this.tweets = tweets;
}
В DDMS я получаю следующие ошибки компиляции:
03-23 16: 14: 02.253: E / AndroidRuntime (215): обработчик Uncaught: выход основного потока из-за невыполненного исключения
03-23 16: 14: 02.263: E / AndroidRuntime (215): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.uwe.bus / com.uwe.bus.InfoActivity}: java.lang.NullPointerException
03-23 16: 14: 02.263: E / AndroidRuntime (215): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2496)
03-23 16:14: 02.263: E / AndroidRuntime (215): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2512)
03-23 16: 14: 02.263: E / AndroidRuntime (215): на android.app.ActivityThread.access $ 2200 (ActivityThread.java:119)
03-23 16: 14: 02.263: E / AndroidRuntime (215): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1863)
03-23 16: 14: 02.263: E / AndroidRuntime (215):в android.os.Handler.dispatchMessage (Handler.java:99) 03-23 16: 14: 02.263: E / AndroidRuntime (215): в android.os.Looper.loop (Looper.java:123)
03-23 16: 14: 02.263: E / AndroidRuntime (215): на android.app.ActivityThread.main (ActivityThread.java:4363)
03-23 16: 14: 02.263: E /AndroidRuntime (215): на java.lang.reflect.Method.invokeNative (собственный метод)
03-23 16: 14: 02.263: E / AndroidRuntime (215): на java.lang.reflect.Method.invoke (Method.java:521)
03-23 16: 14: 02.263: E / AndroidRuntime (215): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860))
03-23 16: 14: 02.263: E / AndroidRuntime (215): вызвано: java.lang.NullPointerException 03-23 16: 14: 02.263: E / AndroidRuntime (215): на ком.uwe.bus.InfoActivity.getTweets (InfoActivity.java:133)
03-23 16:14:02.263: E / AndroidRuntime (215): на com.uwe.bus.InfoActivity.onCreate (InfoActivity.java:39)
03-23 16: 14: 02.263: E / AndroidRuntime (215): наandroid.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)
03-23 16: 14: 02.263: E / AndroidRuntime (215): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2459)
03-23 16: 14: 02.263: E / AndroidRuntime (215): ... еще 11
Строка 39:
ArrayList<tweet> tweets = null;
try {
tweets = getTweets("android", 1);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Строка 133:
for(int i = 0; i < arr.length(); i++) {
JSONObject t = (JSONObject) arr.get(i);
Tweet tweet = new Tweet(
t.get("from_user").toString(),
t.get("text").toString(),
t.get("profile_image_url").toString()
);
tweets.add(tweet);
}
Первая ошибка выглядит так, как будто она возникла из Manifest.xml, но манифест безупречен, поэтому я его не получаю.
Или кто-нибудь знает более простой способ отображениятвиты в андроид ...