简体   繁体   English

通过单击android上的按钮刷新listview

[英]Refresh listview by clicking a button on android

I'm trying to refresh my listview by clicking a button. 我正在尝试通过单击按钮刷新列表视图。 I used notifyDataSetChanged But it is not refreshing. 我使用了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();

  }
});
}}

And also I wrote this on my adapter 我也在适配器上写了这个

public void notifyDataSetChanged() { super.notifyDataSetChanged(); }

What is the problem? 问题是什么?

I clean your code a little. 我稍微整理一下您的代码。 Try this : 尝试这个 :

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM