簡體   English   中英

Android光標適配器獲取復選框和ListView的數據

[英]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)CheckboxbindView()你的方法Adapter如果項目被選中,那么該項目添加到列表中,如果它沒有被選中,然后從列表中刪除的項目,然后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM