2011-04-19 2 views
0

안녕하세요 여러분!
내 안드로이드 앱에 문제가 있습니다. 쇼핑 목록 앱을 만들려고합니다. 나는 내 앱에서 2 개의 쇼핑 목록을 만들려고 노력했다. 내가 목록의 항목을 볼 때 SimpleCursorAdapter를 사용합니다. 문제는 두 번째 목록의 항목을 보려는 경우 해당 항목과 첫 번째 항목도 표시한다는 것입니다. 어떻게해야합니까? 목록의 모든 제목은 테이블에 저장되고 모든 항목은 다른 테이블에 저장됩니다. 여기 내 수업은 모든 아이디어를 환영합니다.
고맙습니다.안드로이드에서 더 많은 쇼핑 목록을 보는 데 문제가 있습니다.

내 코드 : 확실히 잘못 보이는

public class Produse extends Activity{ 

    TextView selection; 
    String titlelist; 
    String id; 
    private ProductDbAdapter prod; 
    private ListDbAdapter db; 
    private SimpleCursorAdapter adapter; 
    private ListView lv; 

    private static final int MENU_ADD = Menu.FIRST; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.produse); 

     selection=(TextView)findViewById(R.id.text); 
     lv=(ListView)findViewById(R.id.listprod); 

     Bundle bundle = getIntent().getExtras(); 
     titlelist = bundle.getString("param1"); 
     id=bundle.getString("param2"); 
     selection.setText(titlelist); 

     db=new ListDbAdapter(this); 
     db.open(); 

     prod=new ProductDbAdapter(this); 
     prod.open(); 
     populate(); 
     prod.close();   
     db.close(); 
    } 

    public boolean onCreateOptionsMenu(Menu menu) {  
     menu.add(0, MENU_ADD, 0, "Add Item"); 
     return true; 
    } 

    public boolean onOptionsItemSelected (MenuItem item) {  
     switch (item.getItemId()) {  
      case MENU_ADD:   
       additem(); 
       return true; 
     } 
     return false; 
    } 
    public void additem() { 
     Intent j= new Intent(Produse.this, List2.class); 
     j.putExtra("param2", id); 
     startActivity(j); 
    } 

    private void populate(){ 
     Cursor c=prod.fetchAll(); 
     startManagingCursor(c); 

     if (c.moveToFirst()){ 
       do{ 
       if (id.toString().equals(c.getString(1))) 

        adapter=new SimpleCursorAdapter(this,R.layout.listproduct,c, 
       new String[] {ProductDbAdapter.KEY_ITEM,ProductDbAdapter.KEY_QUANTITY,ProductDbAdapter.KEY_UNITS}, 
       new int[] {R.id.prod1,R.id.prod2,R.id.prod3}); 
       }while (c.moveToNext()); 
     lv.setAdapter(adapter); 
      } 

    } 


} 

답변

0

흠 뭔가 당신이 당신의 루프 내부에 어댑터를 재 할당하고 있다는 점이다. 커서 어댑터의 포인트는 커서를 반복 할 필요가 없다는 것입니다. 어댑터의 작업입니다. 따라서 인구 코드를 다음과 같이 변경해야한다고 생각합니다.

private void populate(){ 
     Cursor c=prod.fetchAll(); 
     startManagingCursor(c); 
     adapter=new SimpleCursorAdapter(this,R.layout.listproduct,c, 
       new String[] {ProductDbAdapter.KEY_ITEM,ProductDbAdapter.KEY_QUANTITY,ProductDbAdapter.KEY_UNITS}, 
       new int[] {R.id.prod1,R.id.prod2,R.id.prod3}); 
     lv.setAdapter(adapter); 
    } 
+0

그렇다면 내 목록의 항목 만 보려면 어떻게해야합니까? 제발 도와주세요 ... – Gaby

+0

Errr ... thats 내가 대답 한거야, 안돼? – dmon

+0

문제를 해결했습니다 ... 도움을 주셔서 감사합니다 :) – Gaby

관련 문제