[英]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.