[英]Android cursor adapter get checkbox and data of listview
我有使用游標適配器的以下代碼:
public class TemplateActivity extends Activity {
Button btnSort, btnDel;
private ListViewAdapter listAdapter;
private RetailerDatabaseHelper dbHelper;
private ListView listView;
private static final String TAG = TemplateActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_template);
btnSort = (Button) findViewById(R.id.btnSort);
btnDel = (Button) findViewById(R.id.btnDelete);
dbHelper = new RetailerDatabaseHelper(this);
listView = (ListView) findViewById(R.id.listViewData);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "clicked on item: " + position);
}
});
new Handler().post(new Runnable() {
@Override
public void run() {
listAdapter = new ListViewAdapter(TemplateActivity.this, dbHelper.getAllData());
listView.setAdapter(listAdapter);
}
});
我的問題是單擊數據時如何從列表視圖中獲取數據的值。
這是我的適配器:
public class ListViewAdapter extends CursorAdapter {
public ListViewAdapter (Context context, Cursor c) {
super(context, c);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// when the view will be created for first time,
// we need to tell the adapters, how each item will look
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View retView = inflater.inflate(R.layout.custom_dialog_box, parent, false);
return retView;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// here we are setting our data
// that means, take the data from the cursor and put it in views
TextView textViewPersonName = (TextView) view.findViewById(R.id.checkBox1);
textViewPersonName.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(1))));
TextView textViewPersonPIN = (TextView) view.findViewById(R.id.number);
textViewPersonPIN.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(2))));
}
}
另一件事。 我將如何在這里實現,當我選中一個復選框並按下一個按鈕時,它將獲取該復選框的數據? 謝謝大家的幫助。
我沒有在ListViewAdapter上工作,但與您的情況相同。 我使用了CustomAdapter類擴展Baseadapter並使用自定義布局。 通過這種方式,您可以分別為每個視圖(復選框,按鈕,總布局...)設置OnClicklistners。
在OnItemClickListener
最簡單的方法是:
Cursor c = ((ListViewAdapter)l.getAdapter()).getCursor();
c.moveToPosition(position);
然后可以使用c.getLong(0);
獲取ID(假設您通常將id列作為第一列獲取)。
第二個問題:(獲取檢查項目清單) :
你可以寫一個setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener listener)
的Checkbox
在bindView()
你的方法Adapter
如果項目被選中,那么該項目添加到列表中,如果它沒有被選中,然后從列表中刪除的項目,然后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.