01/10/2018, 11:16
Sự kiện setOnItemClickListener trong listview
mình có custom một list view nhưng khi list view đó hiển thị lên được rồi set sự kiện cho nó thì nó lại không chạy
package app.nhiendo.adapter;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import java.util.List;
import java.util.zip.Inflater;
import app.nhiendo.model.Music;
import app.nhiendo.nghenhac.R;
/**
* Created by domin on 8/30/2017.
*/
public class MusicAdapter extends ArrayAdapter<Music>
{
Activity context;
@LayoutRes int resource;
@NonNull List<Music> objects;
public MusicAdapter(@NonNull Activity context, @LayoutRes int resource, @NonNull List<Music> objects) {
super(context, resource, objects);
this.context=context;
this.resource=resource;
this.objects=objects;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater=this.context.getLayoutInflater();
View row=inflater.inflate(this.resource,null);
TextView txtId= (TextView)row.findViewById(R.id.txtId);
TextView txtName=(TextView)row.findViewById(R.id.txtName);
TextView txtSong=(TextView)row.findViewById(R.id.txtSinger);
ImageButton btnLike= (ImageButton) row.findViewById(R.id.btnLike);
ImageButton btnDiskLike= (ImageButton) row.findViewById(R.id.btnDiskLike);
Music m=this.objects.get(position);
txtId.setText(m.getId());
txtName.setText(m.getSong());
txtSong.setText(m.getSinger());
return row;
}
@Nullable
@Override
public Music getItem(int position) {
return this.objects.get(position);
}
}
đây là code lớp custom listview của mình
còn đây là lớp trong MainActivity như sau
ListView lvDanhSach,lvLove;
private void addEvents() {
lvDanhSach.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,"xin chao",Toast.LENGTH_LONG).show();
}
});
}
nhưng khi chạy lên ấn vào từng mục con trong list view thì nó lại không nhận sự kiện này .Cảm ơn mọi người
Bài liên quan
Bạn gọi addEvents khi nào vậy?
trong hàm onCreate bạn à
đây bạn ơi
Vậy là bạn set adapter trong add control và set listener trong add event?
vâng đúng là như thế bạn à
Lạ nhỉ. Cho mình xem code của addControl đc không? Cảm ơn bạn
Có một trường hợp trên stackoverflow giống của bạn
stackoverflow.com
OnItemCLickListener not working in listview
Và có vẻ đây là một lỗi của framework
mình đã thử và fail bạn à
đây là cách fix lỗi này bạn à
set the root layout with: android:descendantFocusability=“blocksDescendants”
set any focusable or clickable view in this item with:
android:clickable=“false”
android:focusable=“false”
android:focusableInTouchMode=“false”
nhưng như ảnh này của mình thấy thì như vậy hai cái nút button thì sẽ ko set được events cho nó vì lúc này nó coi cả cái đấy là 1 cục bạn à
Nếu mình bỏ phần
Thì nó có hoạt động đc không?
chưa thử đợi tý thử rồi sẽ báo cáo
thực tế thì cần chỉ thêm dòng này thôi bạn à
mình vừa bỏ đi thì nó vẫn chạy ngon lành cành đào bạn à
đây là mới test trên máy ảo nha méo biết máy thật có chạy được ko nữa