Recycler Посмотреть объект наЩелкните не работает. (Работает ненормально) - PullRequest
0 голосов
/ 13 сентября 2018

Я видел все связанные ссылки, но пока не нашел никаких решений. Я объясню проблему сейчас. У меня есть recyclerview (Grid Layout), я установил прослушиватель по щелчку, как обычно. Но этот ведет себя ненормально. после стольких нажатий на разные предметы. OnClick запускается случайным образом один или два раза. Любая помощь будет высоко оценена. Я опубликую свой код класса адаптера здесь.

public class CurrentLoadNumberListAdapter extends RecyclerView.Adapter<CurrentLoadNumberListAdapter.ListViewHolder>  {

private Context context;
private List<CurrentLoadNumberDetail> currentLoadNumberDetailList;
private NIOClient nioClient;
private FragmentManager fragmentManager;
private FragmentActivity myContext;
private Activity activity;
private android.support.v4.app.Fragment fragment;
private SweetAlertDialog sweetAlertDialogProgressBar;
public static int clickedPosition;

public CurrentLoadNumberListAdapter(Context context, List<CurrentLoadNumberDetail> currentLoadNumberDetailList , Activity activity, NIOClient nioClient) {
    this.context = context;
    this.currentLoadNumberDetailList = currentLoadNumberDetailList;
    this.activity = activity;
    this.nioClient = nioClient;
}


@NonNull
@Override
public ListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.company_current_load_number_listlayout,null);
    //Specifying Activity for Fragment Transaction
    activity = activity;
    myContext = (FragmentActivity) activity;
    //Iniallizing Fragment Manager
    fragmentManager = myContext.getSupportFragmentManager();

    //Making Sweet Alert progress Bar
    sweetAlertDialogProgressBar = new SweetAlertDialog(context,SweetAlertDialog.PROGRESS_TYPE);
    sweetAlertDialogProgressBar.getProgressHelper().setBarColor(Color.parseColor("#9ccc65"));

    return new CurrentLoadNumberListAdapter.ListViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ListViewHolder holder, final int position) {
    holder.loadNumber.setText(currentLoadNumberDetailList.get(position).getLoadNumber());

}

@Override
public int getItemCount() {
    return currentLoadNumberDetailList.size();
}


class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private Button loadNumber;

    public ListViewHolder(View itemView){
        super(itemView);
        loadNumber = itemView.findViewById(R.id.current_load_number);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {
        int ItemPosition = getLayoutPosition();
        //nioClient.sendMsg(getMinLoad(currentLoadNumberDetailList.get(position).getIdDeviceLoadRecord())+" \r\n\r\n");
        Toast.makeText(context,"On click " + ItemPosition ,Toast.LENGTH_SHORT).show();
    }
}

public void updateData(){
        currentLoadNumberDetailList.clear();
        notifyDataSetChanged();
}

private String getMinLoad(String id){
    Gson gson = new Gson();
    GetMinLoadRequestModel minLoadRequestModel = new GetMinLoadRequestModel();
    minLoadRequestModel.setIdDeviceLoadRecord(id);
    minLoadRequestModel.setMessageType("get_min_load_info");
    String json = gson.toJson(minLoadRequestModel,GetMinLoadRequestModel.class);
    return json;
}

}

Кто-нибудь, пожалуйста, посмотрите. Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

У меня была та же проблема, что происходило в том, что в моем случае происходило много событий пользовательского интерфейса. Эти события пользовательского интерфейса были успешными при необязательном сетевом вызове, который происходил непрерывно, и по запросу этого вызова происходило обновление списка.поэтому я не могу ни нажать ни на одну вещь, ни на кнопку в списке, ни на весь элемент списка (я знаю, что причиной может быть что-то другое, но это может быть и причиной) РЕШЕНИЕ: удален мутатор пользовательского интерфейса (ненужный сетевой вызов) ивсе работало нормально.

0 голосов
/ 13 сентября 2018

Итак, я нашел проблему.Как предложил @ Веселин Тодоров.Кнопка является интерактивным представлением по умолчанию, поэтому она потребляла onClick до того, как достигла моего viewHolder. Решение Просто сделайте кнопку xml атрибутом

android:clickable="false".

Это будет работать нормально.Надеюсь, это кому-нибудь поможет.Спасибо, ребята, что ответили.

...