1

我遇到的问题是处理 1.6 设备的模拟器和实际的 1.6 android 设备(在本例中为 T-mobile g1)时的不同行为,当模拟器中的列表更新时,它会替换事先存在的列表. 在手机上,它只是将新列表附加到旧列表的底部。

我需要设备表现得像模拟器一样。

任何帮助将不胜感激。

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import oauth.signpost.OAuthConsumer;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class timelineView extends ListActivity{

private ProgressDialog m_ProgressDialog = null; 
private ArrayList<Order> m_orders = null;
private OrderAdapter m_adapter;
private Runnable viewOrders;

private String consumerKey;
private String consumerSecret;
private String accessKey;
private String accessSecret;
private Thread thread;
private imageLoader avatar;

private Bitmap picture;

private Timer timer = new Timer();

@Override
public void onCreate(Bundle savedInstanceState) {

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

    m_orders = new ArrayList<Order>();

    this.m_adapter = new OrderAdapter(this, R.layout.timeline_entry, m_orders);

    setListAdapter(this.m_adapter);

    refresher();
}
private Runnable returnRes = new Runnable() {

    public void run() {
        m_adapter.clear();
        if(m_orders != null && m_orders.size() > 0){
            m_adapter.notifyDataSetChanged();
            for(int i=0;i<m_orders.size();i++)
            m_adapter.add(m_orders.get(i));
        }
        m_adapter.notifyDataSetChanged();
    }
};
private void getOrders(ArrayList<Order> m_orders){

            String[][] resultOfTweet = new String[20][4];

            twitterHandeler sender = new twitterHandeler();

            consumerKey = "";
            consumerSecret = "";
            accessKey = "";
            accessSecret = "";

            OAuthConsumer consumer = sender.setConsumer(consumerKey, consumerSecret, accessKey, accessSecret);

            try {
                resultOfTweet = sender.getMentionTimeLine(consumer);
            } catch (OAuthMessageSignerException e) {
                // TODO Auto-generated catch block
                finish();
            } catch (OAuthExpectationFailedException e) {
                // TODO Auto-generated catch block
                finish();
            }


            int i = 0;

            do{
                Order o1 = new Order();
                o1.setOrderName(resultOfTweet[i][0]);
                o1.setOrderStatus(resultOfTweet[i][0] + "\n" + resultOfTweet[i][1]);

                avatar = new imageLoader();

                picture = avatar.imageLoaderer(resultOfTweet[i][3]);
                o1.setOrderPicture(picture);
                m_orders.add(o1);
                i++;
            }while(i < 20);

        runOnUiThread(returnRes);
    }
private class OrderAdapter extends ArrayAdapter<Order> {

    private ArrayList<Order> items = null;

    public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) {
            super(context, textViewResourceId, items);
            this.items = items;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null){
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.timeline_entry, null);
            }
            Order o = items.get(position);
            if (o != null){
                    TextView tt = (TextView) v.findViewById(R.id.topLine);
                    TextView bt = (TextView) v.findViewById(R.id.secondLine);
                    ImageView tv = (ImageView) v.findViewById(R.id.icons);
                    if (tt != null) {
                          tt.setText(o.getOrderName());                            }
                    if(bt != null){
                          bt.setText(o.getOrderStatus());
                    }
                    if(tv != null){
                        tv.setImageBitmap(o.getOrderPicture());
                  }
            }
            return v;
    }
}

private void refresher(){

    timer.scheduleAtFixedRate( new TimerTask() {
            public void run() {
                m_orders = new ArrayList<Order>();
                getOrders(m_orders);
            thread =  new Thread(null, viewOrders, "MagentoBackground");
            thread.start();
            } 
    }, 0, 30000);

    }
}
4

0 回答 0