android sqlite onresume()oncreate()

时间:2012-12-17 04:10:48

标签: android android-activity onresume

我有几个写入和读取数据库的活动。因为客户必须在它们之间切换。如果我只在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;
    }



}

1 个答案:

答案 0 :(得分:1)

如果你没有完成你的活动,那么你就不需要在onResume()中写下所有的东西了

你应该在onResume()中写这个。

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

将您的CandidateAdapter定义为类变量。