簡體   English   中英

android sqlite onresume()oncreate()

[英]android sqlite onresume() oncreate()

我有一些寫和讀數據庫的活動。 由於客戶端必須在它們之間切換。 如果我僅將代碼保留在onCreate中,則當活動重新回到屏幕上時,將不會更新不同的視圖。 什么是確保活動集中注意力時確保所有數據都正確的最佳方法是什么? 將evrything從onCreate()移到onResume()是否明智?

有水可以使它變得更好嗎?

public class InboxActivity extends ListActivity {

    List<Candidate> candidates;
    private DatabaseHandler db;
    private CandidateAdapter adapter;
    private ListView lvMain;
    public void onDestroy(){
        if (db != null)
            db.close();

        super.onDestroy();
        //db.close();
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inbox_list);
        db = new DatabaseHandler(this);
        candidates = db.getAllCandidates(1);
        db.close();
        adapter = new CandidateAdapter(this,(ArrayList) candidates);
        lvMain = getListView();
        lvMain.setAdapter(adapter);
        lvMain.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                String name = ((TextView) view.findViewById(R.id.from)).getText().toString();
                Log.d("Name ", name);


                Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                in.putExtra("name", name);
                Log.d("Starting activity ", "Yeah ");
                startActivity(in);

            }
        });
    }
    public void onResume(){
        super.onResume();
        db = new DatabaseHandler(this);
        candidates = db.getAllCandidates(1);
        db.close();
        adapter = new CandidateAdapter(this,(ArrayList) candidates);
        lvMain = getListView();
        lvMain.setAdapter(adapter);
        adapter.notifyDataSetChanged();

    }





}

適配器

public class CandidateAdapter extends BaseAdapter{
    Context ctx;
    LayoutInflater lInflater;
    ArrayList<Candidate> objects;
    CandidateAdapter(Context context, ArrayList<Candidate> candidates) {
            ctx = context;
            objects = candidates;
            lInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          }
    public int getCount() {
        return objects.size();
      }
    public Object getItem(int position) {
        return objects.get(position);
      }
    public long getItemId(int position) {
        return position;
      }
    Candidate getCandidate(int position) {
        return ((Candidate) getItem(position));
      }
    public View getView(int position, View convertView, ViewGroup parent) {
        // используем созданные, но не используемые view
        View view = convertView;
        if (view == null) {
          view = lInflater.inflate(R.layout.inbox_list_item, parent, false);
        }
        Candidate p = getCandidate(position);
        ((TextView) view.findViewById(R.id.from)).setText(p.get_name());
        ((TextView) view.findViewById(R.id.subject)).setText(p.get_office());
        ((RatingBar) view.findViewById(R.id.rateindicator)).setRating(p.get_ranking());
        int loader = R.drawable.loader;


        ImageView image = (ImageView) view.findViewById(R.id.photo);


        String image_url = p.get_photograph();


        ImageLoader imgLoader = new ImageLoader(ctx);


        imgLoader.DisplayImage(image_url, loader, image);
        return view;
    }



}

如果您尚未完成活動,則無需在onResume()中編寫所有內容

您應該只在onResume()中編寫此代碼。

 public void onResume(){
     adapter = new CandidateAdapter(this,(ArrayList) candidates);
    lvMain.setAdapter(adapter);
    adapter.notifyDataSetChanged()
}

CandidateAdapter定義為類變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM