[英]Refresh listview by clicking a button on android
我正在嘗試通過單擊按鈕刷新列表視圖。 我使用了notifyDataSetChanged
但沒有刷新。
static final String TAG_RESULTS="results";
static final String TAG_TWEET="text";
static final String TAG_USER_ID = "from_user_id_str";
static final String TAG_USER_NAME = "from_user";
static final String TAG_PIC_URL="profile_image_url";
static final String TAG_TWEET_ID="id_str";
//static final String URL="http://search.twitter.com/search.json?q=";
static final String URL="https://api.twitter.com/1.1/search/tweets.json?q=";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tweet);
String url = getIntent().getStringExtra("url");
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(url);
Log.i("deneme", json.toString());
try {
results = json.getJSONArray(TAG_RESULTS);
tweets=new String[results.length()];
user_ids=new String[results.length()];
user_names=new String[results.length()];
pic_urls=new String[results.length()];
tweet_ids=new String[results.length()];
for(int i = 0; i < results.length(); i++){
JSONObject c = results.getJSONObject(i);
tweets[i]= c.getString(TAG_TWEET);
user_ids[i]= c.getString(TAG_USER_ID);
user_names[i]= "@"+c.getString(TAG_USER_NAME);
pic_urls[i]= c.getString(TAG_PIC_URL);
tweet_ids[i]= c.getString(TAG_TWEET_ID);
}
} catch (JSONException e) {
e.printStackTrace();
}
lv= (ListView) findViewById(R.id.listView);
final LazyAdapter adapter = new LazyAdapter(this, pic_urls, user_names, tweets);
lv.setAdapter(adapter);
refreshButton= (ImageButton) findViewById(R.id.imageButton);
refreshButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(TweetActivity.this,"tık tık", Toast.LENGTH_LONG).show();
adapter.notifyDataSetChanged();
}
});
}}
我也在適配器上寫了這個
public void notifyDataSetChanged() { super.notifyDataSetChanged(); }
問題是什么?
我稍微整理一下您的代碼。 嘗試這個 :
private static final String TAG_RESULTS="results";
private static final String TAG_TWEET="text";
private static final String TAG_USER_ID = "from_user_id_str";
private static final String TAG_USER_NAME = "from_user";
private static final String TAG_PIC_URL="profile_image_url";
private static final String TAG_TWEET_ID="id_str";
private static final String URL="https://api.twitter.com/1.1/search/tweets.json?q=";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tweet);
mListView = (ListView) findViewById(R.id.listView);
mRefreshButton = (ImageButton) findViewById(R.id.imageButton);
if (mRefreshButton != null) {
mRefreshButton.setOnClickListener(this);
}
if (getIntent() != null) {
String url = getIntent().getStringExtra("url");
}
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(url);
Log.i("deneme", json.toString());
try {
results = json.getJSONArray(TAG_RESULTS);
tweets = new String[results.length()];
user_ids = new String[results.length()];
user_names = new String[results.length()];
pic_urls = new String[results.length()];
tweet_ids = new String[results.length()];
for (int i = 0; i < results.length(); i++) {
JSONObject c = results.getJSONObject(i);
tweets[i] = c.getString(TAG_TWEET);
user_ids[i] = c.getString(TAG_USER_ID);
user_names[i] = "@"+c.getString(TAG_USER_NAME);
pic_urls[i] = c.getString(TAG_PIC_URL);
tweet_ids[i] = c.getString(TAG_TWEET_ID);
}
} catch (JSONException e) {
e.printStackTrace();
}
LazyAdapter adapter = new LazyAdapter(this, pic_urls, user_names, tweets);
mListView.setAdapter(adapter);
}
@Override
public void onClick(View view) {
if (view == mRefreshButton) {
Toast.makeText(this,"tık tık", Toast.LENGTH_LONG).show();
((LazyAdapter) mListView.getListAdapter()).notifyDataSetChanged();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.