ListView控件不能单击项目中的android控件、单击、项目、ListView

2023-09-04 06:56:50 作者:社会水太深

我有一个的ListView 在我的应用程序。

我实施 OnItemClickListener()打开文本菜单项目被点击时。

但是,当我点击一排,吐司不会出现。

请帮助,

我的code:

  mySqlHelper dbHelper =新mySqlHelper(本);
    SQLiteDatabase dbRead = dbHelper.getReadableDatabase();

    补栏= SpinBulan.getSelectedItemPosition();
    tahun =的Integer.parseInt(ThnTransaksi.getText()的toString());

    日历MYCAL =新的GregorianCalendar(tahun,补篮,1);
    hariBulan = mycal.getActualMaximum(Calendar.DAY_OF_MONTH);

    bulanTrans =补栏+ 1;

    字符串dapatId;
    INT id_tgl,cariSampai;


    光标Cari_id = dbRead.rawQuery(从m_transfer选择_id,其中tgl_transfer ='1 /+ bulanTrans +/+ tahun +',NULL);

    Cari_id.moveToFirst();

    dapatId = Cari_id.g​​etString(0);


    id_tgl =的Integer.parseInt(dapatId);

    cariSampai = id_tgl + hariBulan  -  1;

    CariTgl = dbRead.rawQuery(SELECT * FROM m_transfer那里_id'之间+ id_tgl +和+ cariSampai +',NULL);
    startManagingCursor(CariTgl);

    适配器=新SimpleCursorAdapter(
            Transfer.this,
            R.layout.data_tanggal,
            CariTgl,
            新的String [] {tgl_transfer,stts_transfer},
            新的INT [] {R.id.textListTanggal,R.id.textStatusTanggal});

    dataTanggal.setAdapter(适配器);

    dataTanggal.setSelected(真正的);
    dataTanggal.setOnItemClickListener(科);
 

onItemClickListener()

 私人AdapterView.OnItemClickListener科=新AdapterView.OnItemClickListener(){
    公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,长ARG3){
        Toast.makeText(getApplicationContext(),选择+ ARG2,Toast.LENGTH_SHORT).show();

    }
};
 

解决方案

由于正在实施自定义适配器,您的充气布局必须落实安卓:可聚焦=假在你的元素或机器人:在您的主要布局descendantFocusability =blocksDescendants来避免触发因素中的任何监听器内部列表视图的(你不用想)

ListView控件 1130

I have a ListView in my app.

I implemented OnItemClickListener() to open a ContextMenu when an item is clicked.

But, when i click a row, Toast does not appear.

Help Please,

My Code :

mySqlHelper dbHelper = new mySqlHelper(this);
    SQLiteDatabase dbRead = dbHelper.getReadableDatabase();

    bulan = SpinBulan.getSelectedItemPosition();
    tahun = Integer.parseInt(ThnTransaksi.getText().toString());

    Calendar mycal = new GregorianCalendar(tahun, bulan, 1);
    hariBulan = mycal.getActualMaximum(Calendar.DAY_OF_MONTH);

    bulanTrans = bulan+1;

    String dapatId;
    int id_tgl , cariSampai;


    Cursor Cari_id = dbRead.rawQuery("select _id from m_transfer where tgl_transfer = '1/"+bulanTrans+"/"+tahun+"'",null);

    Cari_id.moveToFirst();

    dapatId = Cari_id.getString(0);


    id_tgl = Integer.parseInt(dapatId);

    cariSampai = id_tgl + hariBulan - 1;

    CariTgl = dbRead.rawQuery("select * from m_transfer where _id BETWEEN '"+id_tgl+"' and '"+cariSampai+"'",null);
    startManagingCursor(CariTgl);

    adapter = new SimpleCursorAdapter(
            Transfer.this, 
            R.layout.data_tanggal, 
            CariTgl, 
            new String[] {"tgl_transfer","stts_transfer"}, 
            new int[] {R.id.textListTanggal, R.id.textStatusTanggal});

    dataTanggal.setAdapter(adapter);

    dataTanggal.setSelected(true);
    dataTanggal.setOnItemClickListener(ke);

and onItemClickListener() :

private AdapterView.OnItemClickListener ke = new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Toast.makeText(getApplicationContext(), "selected"+arg2, Toast.LENGTH_SHORT).show();

    }
};

解决方案

Since you are implementing a custom adapter, your inflated layout must implement android:focusable="false" in your elements or android:descendantFocusability="blocksDescendants" on your main layout to avoid to trigger any listener of the elements inside of the listview (which you dont want to)