我试图通过单击按钮来刷新我的列表视图。我用notifyDataSetChanged
但它不令人耳目一新。通过点击android上的按钮刷新列表视图
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(); }
有什么问题吗?
你还没有更改任何关于按钮点击的数据?并使用Asynctask在您的视图中获取数据和绑定。 – Oam
@Oam我从Web服务获取数据。数据总是在那里变化,但是当我点击按钮时,列表视图不会改变。 如果你给我更多关于如何使用Asynctask的信息,我会很高兴。 – MSr
根据您的代码,来自Web服务的数据最初会加载,并且当单击该按钮时您并未调用Web服务,因此看起来它不会被刷新。把'asynctask',在'doInBackground'中调用web服务,并在'onPostExecute'中设置适配器,然后在按钮单击时,再次调用你的asynctask。检查这个asynctask http://stackoverflow.com/questions/9671546/asynctask-android-example – Oam