2011-09-16 4 views
0
에 나타나지 않습니다

내 코드는 dabase에서 데이터를로드 할 수 ListActvity의 ListView는 ListActivity

public class ViewList extends ListActivity { 
private ListViewAdapter lAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    lAdapter = new ListViewAdapter(); 
    DBAdapter db = new DBAdapter(this); 
    db.open();  
    Cursor cursor = db.fetchAllDeliveryItem(); 
    lAdapter.setCursor(cursor); 
    cursor.moveToFirst(); 
    //Toast.makeText(getApplicationContext(), cursor.getString(1), Toast.LENGTH_SHORT).show(); 
    setListAdapter(lAdapter); 

} 
private class ListViewAdapter extends BaseAdapter{ 
    //String data [] = {"_id","itemname","pickupaddress","deliveryaddress","delivered"}; 
    private LayoutInflater mInflater; 
    //private ArrayList mData = new ArrayList(); 
    private Cursor cursor; 
    public ListViewAdapter() { 
      mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

    public void setCursor(Cursor cursor) 
    { 
     this.cursor = cursor; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     Log.i("GetView RUN","Runing runing"); 
     if (convertView == null) 
     { 
      convertView = mInflater.inflate(R.layout.receiverow, null); 
      holder = new ViewHolder(); 
      holder.textView = (TextView)convertView.findViewById(R.id.label); 
      holder.checkbox = (CheckBox)convertView.findViewById(R.id.check); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder)convertView.getTag(); 
     }   
     // String getPosition[] = (String) mData.get(position); 
     //holder.textView.setText(mData.get(position));  
     //holder.textView.setText(cursor.getString(1)); 
     holder.textView.setText("Test"); 
     if(cursor.getInt(4)!=0) 
     holder.checkbox.setChecked(true); 
     else 
      holder.checkbox.setChecked(false); 
     return convertView; 
    } 

} 
public static class ViewHolder { 
    public TextView textView; 
    public CheckBox checkbox; 
} 

}

나는 로그 고양이에서 볼

방법 공공 보기의 getView (INT 위치보기 목록보기하는 것입니다 convertView, ViewGroup parent) 호출되지 않고 listviewitems가 목록보기에 표시되지 않습니다. 해결 방법은 무엇입니까? 지원해 주셔서 감사합니다. 당신이 SimpleCursorAdapter를 사용할 수있을 때

+0

왜 getView를 재정의합니까? –

답변

1

은 자신의 어댑터를 롤하지 마십시오

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    DBAdapter db = new DBAdapter(this); 
    db.open(); 
    Cursor cursor = db.fetchAllDeliveryItem(); 

    // *** replace these strings with the actual *column names* of your query! 
    String[] from = { "name_label_column", "name_check_column" }; 
    int[] to = { R.id.label, R.id.check }; 

    setListAdapter(new SimpleCursorAdapter(this, R.layout.receiverow, cursor, from, to)); 
} 
+0

감사합니다. CursorAdapter를 확장하면 작동합니다. D –

0

당신은 어댑터 getCount() 방법 내에서 0을 반환합니다. 결과적으로 표시되지 않는 항목이없는 ListView이됩니다.

getItemId()도 항상 동일한 값 (0)이며 작동하는 어댑터를 얻으려면 올바르지 않습니다. 이 문제를 해결하기 위해 단지 position 인수를 반환 할 수 있습니다.