android按钮刷新

时间:2012-05-11 17:59:08

标签: android button refresh

我正在构建一个基于Android的应用程序来实现Twitter搜索功能。按钮单击仅适用于第一个按钮。如果我更改搜索词并再次单击该按钮,则无法刷新。任何人都可以给我一个提示? `public class TwitterSActivity extends Activity实现OnClickListener {     EditText etQuery;     按钮btnQuery;

class Tweet{
    public String username;
    public String message;
    public String image_url;
}

ArrayList<Tweet> tweets = new ArrayList<Tweet>();

@Override
public void onCreate(Bundle savedInstanceState) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    etQuery = (EditText) findViewById (R.id.et);
    btnQuery = (Button) findViewById (R.id.btn);
    btnQuery.setOnClickListener(this);
}


@Override
public void onClick(View v){

    if(v.getId() == R.id.btn){
        Toast.makeText(this, "Query submitted", Toast.LENGTH_LONG).show();

        Getdata getdata = new Getdata();
        String returned = null;
        String searchTerm = etQuery.getText().toString();
        try {
            returned = getdata.getInternetData(searchTerm);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try{
            JSONObject jo = new JSONObject(returned);
            JSONArray ja = jo.getJSONArray("results");
            for(int i=0; i<ja.length(); i++){
                JSONObject job = ja.getJSONObject(i);
                Tweet tt = new Tweet();
                tt.username = job.getString("from_user");
                tt.message = job.getString("text");
                tt.image_url = job.getString("profile_image_url");
                tweets.add(tt);
            }
        }
        catch(JSONException e){
            Log.e("log_tag", "Error parsing data: "+e.toString());
        }

        ListView lv = (ListView) findViewById(R.id.listView1);

        class FancyAdapter extends ArrayAdapter<Tweet> {

            public FancyAdapter() {
                super(TwitterSActivity.this, android.R.layout.simple_list_item_1, tweets);
            }

            public View getView(int position, View convertView, ViewGroup parent){
                ViewHolder holder;
                if(convertView == null){
                    LayoutInflater inflater = getLayoutInflater();
                    convertView = inflater.inflate(R.layout.listitem, null);
                    holder = new ViewHolder(convertView);
                    convertView.setTag(holder);
                }
                else
                {
                    holder = (ViewHolder)convertView.getTag();
                }
                holder.populatefrom(tweets.get(position));
                return(convertView);
            }


            class ViewHolder {
                public TextView username = null;
                public TextView message = null;
                public ImageView image = null;

                ViewHolder(View listitem){
                    username = (TextView)listitem.findViewById(R.id.username);
                    message = (TextView)listitem.findViewById(R.id.message);
                    image = (ImageView)listitem.findViewById(R.id.avatar);
                }

                void populatefrom(Tweet t){
                    username.setText(t.username);
                    message.setText(t.message);
                    image.setImageBitmap(getBitmap(t.image_url));
                }
            }
        }

        FancyAdapter ar = new FancyAdapter();
        lv.setAdapter(ar);

    }
}

public Bitmap getBitmap(String bitmapUrl) {
    try {
        URL url = new URL(bitmapUrl);
        return BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
    }
    catch(Exception e) {return null;}
}`

1 个答案:

答案 0 :(得分:0)

最后我弄明白了,这是我如何解决它: 我将ArrayList<Tweet> tweets = new ArrayList<Tweet>();更改为final ArrayList<Tweet> tweets = new ArrayList<Tweet>(); 然后在onClick()方法下移动它。它没有notifyDataSetChanged()。