2011-09-16 53 views
0

我的代碼是一個ListActvity從dabase加載數據的ListViewListView控件沒有出現在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; 
} 

}

我在登錄貓看到方法public 查看getView(INT位置,查看convertView,ViewGroup以及母公司) doen't調用和listviewitems沒有出現在列表視圖 如何解決呢? 感謝您的支持。

+0

爲什麼你重寫getView? –

回答

1

不要推出自己的適配器時,您可以使用SimpleCursorAdapter

@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()也總是returnins相同的值(0),這是不正確的得到一個工作適配器。你可以返回position參數來解決這個問題。