Android - Unable to increment or decrement value from list item

前端 未结 3 1932
醉话见心
醉话见心 2020-12-03 20:37

Hi everyone i am using custom listview for getting data from server and show in listview.. I am able to get data and show it in listview but i dont know to implement the cli

3条回答
  •  不思量自难忘°
    2020-12-03 21:03

    Finally i solved my answer my self. Just need to implement interface and call in fragment class..

    Updated Adapter class

    public class FeedListAdapter extends RecyclerView.Adapter {
    private Activity activity;
    private LayoutInflater inflater;
    private List feedItems;
    private List filteredfeedItems;
    ImageView plus;
    ImageView minus;
    String result;
    String formattedDate;
    int id;
     private View.OnClickListener onAddNum;
     private View.OnClickListener onSubNum;
    
    public FeedListAdapter(Activity activity, List feedItems)
    {       this.activity = activity;
        this.feedItems = feedItems;
        this.filteredfeedItems = feedItems;
    
        inflater = ( LayoutInflater )activity.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    
    // create interface method
    
      public void setOnAddNum(View.OnClickListener onAddNum){ 
            this.onAddNum = onAddNum;
        }
        public void setOnSubNum(View.OnClickListener onSubNum){
            this.onSubNum = onSubNum;
        }
    
      @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.feed_item, parent, false);
            ViewHolder viewHolder = new ViewHolder(v);
            return viewHolder;
        }
      @Override
        public void onBindViewHolder(final ViewHolder holder, int position) {
    
          FeedItem item =(FeedItem)filteredfeedItems.get(position);
             holder.date.setText(item.getObservation());
             holder.initiator
                .setText(item.getObservation());
                holder.location.setText(String.valueOf(item.getNum())+"");
             holder.assignTo.setText(item.getSummary());
    
     // set tag to know which button you clicked'
    
             holder.plus.setTag(position);
             holder.plus.setFocusable(true);
             holder.plus.setClickable(true);
    
     //  set callback interface  ,  
    
             holder.plus.setOnClickListener(onAddNum);
             holder.minus.setTag(position);
             holder.minus.setOnClickListener(onSubNum);
    
      }
      @Override
        public int getItemCount() {
            return filteredfeedItems.size();
        }
    
      public long getItemId(int position) {
        return position;
    
      }
    
        class ViewHolder extends RecyclerView.ViewHolder{
    
             ImageView plus;
             ImageView minus;
             TextView date;
             TextView initiator;
             TextView assignTo;
             TextView location;
            public ViewHolder(View vi) {
                super(vi);
    
               date = (TextView) vi.findViewById(R.id.name);
               initiator = (TextView) vi
                        .findViewById(R.id.timestamp4);
               assignTo = (TextView) vi.findViewById(R.id.timestamp);
    
               location = (TextView) vi.findViewById(R.id.timestamp2);
               plus = (ImageView) vi.findViewById(R.id.btnAddToCart1);
    
               minus = (ImageView) vi.findViewById(R.id.btnAddToCart5);
    
            }
        }
    } 
    

    now in activity class implement View.OnClickListener for button events.

    public class MyFragment extends Fragment implements View.OnClickListener
    
     @Override
    public void onClick(View view) {
        Object tag = view.getTag();
        switch (view.getId()){
            case R.id.item_btn_add: //  click add buttons number  ,  performs corresponding processing  
    
     if (tag != null && tag instanceof Integer) {
    
                     int position = (Integer) tag;
                Your pojo class  
    
          int num =feedItems.get(position).getNum();
             num++;
          feedItems.get(position).setNum(num);
           adapter.notifyDataSetChanged();
      }
         break;
    
       case R.id.btnAddToCart5:
           if (tag != null && tag instanceof Integer) {
    
               int position = (Integer) tag;
               int num =feedItems.get(position).getNum();
    
           if (num>0) {
               num--;
               feedItems.get(position).setNum(num);
               listAdapter.notifyDataSetChanged();
           }
    
           else{
                num= 0;
                listAdapter.notifyDataSetChanged();
            }
    
           }
           break;
         }
    

    Enjoy coding

提交回复
热议问题