Как прочитать положение каждого предмета из списка переработчиков в android studio 3.6, не нажимая на просмотр товара? - PullRequest
0 голосов
/ 22 марта 2020

Я сделал вышеупомянутую проблему, используя setOnItemClickListener , но я хочу решение без нажатия на элемент просмотра.

код setOnItemClickListener

adapter.setOnItemClickListener(new PostCropListBuyerAdapter.OnItemClickListener()
        {
            @Override
            public void onItemClick(int position)
            {
                View itemView =                 
                recyclerView.findViewHolderForAdapterPosition(position).itemView;
                TextView t = itemView.findViewById(R.id.idTextViewPostCropNameBuyer);
            }


        });

Класс адаптера, в котором есть 7 textviw и одна кнопка просмотра. я хочу, чтобы кнопка сохранения была нажата пользователем, тогда имя кнопки должно быть изменено и навсегда.

PostCropListBuyerAdapter

public class PostCropListBuyerAdapter extends RecyclerView.Adapter<PostCropListBuyerAdapter.PRSListViewHolder>
{
    private List<PostCropBuyerInfo> postCropList;

    public PostCropListBuyerAdapter(List<PostCropBuyerInfo> postCropList)
    {
        this.postCropList = postCropList;
    }


    @NonNull
    @Override
    public PRSListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.post_crop_list_buyer,parent,false);
        return new PRSListViewHolder(view, mListener);

    }

    @Override
    public void onBindViewHolder(@NonNull PRSListViewHolder holder, int position)
    {

        PostCropBuyerInfo postCropData = postCropList.get(position);

        holder.textViewname.setText("Crop Name : "+postCropData.getName());
        holder.textViewquantity.setText("Quantity : "+postCropData.getQuantity());
        holder.textViewrate.setText("Rate : "+postCropData.getRate());
        holder.textViewdescription.setText("Description : "+postCropData.getDescription());
        holder.textViewtime.setText("Time : "+postCropData.getTime()+" months");
        holder.textViewbuyername.setText("Consumer Name : "+postCropData.getBuyername());
        holder.textViewbuyernumber.setText("Consumer Number : "+postCropData.getBuyernumber());
        holder.buttonSaveToList.setText(postCropData.getButtonName());

    }

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


    private OnItemClickListener mListener;

    public interface OnItemClickListener
    {
        void onItemClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener)
    {
        mListener = listener;
    }

    public static class PRSListViewHolder extends RecyclerView.ViewHolder
    {
        TextView textViewname;
        TextView textViewquantity;
        TextView textViewrate;
        TextView textViewdescription;
        TextView textViewtime;
        TextView textViewbuyername;
        TextView textViewbuyernumber;
        Button buttonSaveToList;
        Button buttonSavedSuccessfully;


        public PRSListViewHolder(@NonNull View itemView, final OnItemClickListener listener)
        {
            super(itemView);
itemView.findViewById(R.id.idTextViewPostCropIdBuyer);
            textViewname = itemView.findViewById(R.id.idTextViewPostCropNameBuyer);
            textViewquantity = itemView.findViewById(R.id.idTextViewPostCropQuantityBuyer);
            textViewrate = itemView.findViewById(R.id.idTextViewPostCropRateBuyer);
            textViewdescription = itemView.findViewById(R.id.idTextViewPostCropDesriptionBuyer);
            textViewtime = itemView.findViewById(R.id.idTextViewPostCropTimeBuyer);
            textViewbuyername = itemView.findViewById(R.id.idTextViewPostBuyerNameBuyer);
            textViewbuyernumber = itemView.findViewById(R.id.idTextViewPostBuyerNumberBuyer);
            buttonSaveToList = itemView.findViewById(R.id.idButtonPostSaveToListButtonBuyer);
            buttonSavedSuccessfully = itemView.findViewById(R.id.idButtonPostSavedSuccessfullyButtonBuyer);



            buttonSaveToList.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    if(listener != null)
                    {
                        int position = getAdapterPosition();

                        if(position != RecyclerView.NO_POSITION)
                        {
                            listener.onItemClick(position);

                        }
                    }
                }
            });

        }
    }
}

1 Ответ

0 голосов
/ 23 марта 2020

Определите список массивов, а также значение типа int в вашем классе RecyclerView:

ArrayList<String> data = new ArrayList<>();
int i=0;

Теперь измените часть, в которую вы вставляете данные, в TextViews и кнопках, например:

    data.add("Crop Name : "+postCropData.getName());
    holder.textViewname.setText(data.get(i));
    i++;
    data.add("Quantity : "+postCropData.getQuantity());
    holder.textViewquantity.setText(data.get(i));
    i++;
    data.add("Rate : "+postCropData.getRate());
    holder.textViewrate.setText(data.get(i));
    i++;
    data.add("Description : "+postCropData.getDescription());
    holder.textViewdescription.setText(data.get(i));
    i++;
    data.add("Time : "+postCropData.getTime()+" months");
    holder.textViewtime.setText(data.get(i));
    i++;
    data.add("Consumer Name : "+postCropData.getBuyername());
    holder.textViewbuyername.setText(data.get(i));
    i++;
    data.add("Consumer Number : "+postCropData.getBuyernumber());
    holder.textViewbuyernumber.setText(data.get(i));
    i++;
    data.add(postCropData.getButtonName());
    holder.buttonSaveToList.setText(data.get(i));
    i++;

ok Теперь, например, вы хотите изменить первый текстовый вид третьего элемента. Номер элемента данных для этого текстового представления равен 17. поэтому вы делаете это, чтобы изменить его:

data.set(17,String New Value);
adapter.notifyItemChanged(3);

Новое значение - это желаемое строковое значение. для set.17 - это номер элемента данных для заданного c TextView, а адаптер - для вашего адаптера RecyclerView.

...