Получить значение в методе из getView BaseAdapter - PullRequest
0 голосов
/ 04 июля 2018

Это мой пользовательский адаптер. У меня есть три ImageViews здесь. Я хотел дать onclick для каждого изображения.

Сначала я вызвал метод при нажатии на ImageView. В этом методе мне нужно заменить на другое изображение. А также необходимо заменить оставшиеся два изображения Imageview также.

Теперь, когда я нажимаю на первое изображение, вызывается метод, и изображение также меняется. Но для оставшихся двух изображений, он показывает исключение NULL POINTER.

Как получить доступ к этим ImageViews в этом методе.

Любая помощь будет оценена.

public class CustomTestingProductsListAdapter extends BaseAdapter{
public CustomTestingProductsListAdapter(Context context, Activity activity, List<V_APP_PACK_QR_DET_INFO> pack_qr_det_infos) {
    layoutInFlater = LayoutInflater.from(context);
    this.pack_qr_det_infos = pack_qr_det_infos;
    this.curActivity = activity;
    this.mContext = (VilanApplication) VilanApplication.mContext;
}

@Override
public int getCount() {
    return pack_qr_det_infos.size();
}

@Override
public Object getItem(int position) {
    return pack_qr_det_infos.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    try{
        CustomTestingProductsListAdapter.ViewHolder holder;
        if(convertView == null){
            holder = new CustomTestingProductsListAdapter.ViewHolder();
            convertView = layoutInFlater.inflate(R.layout.tst_ver_prdouct_list_items,null);
            holder.tvProduct = convertView.findViewById(R.id.tv_qc_productName);
            holder.DLSno = convertView.findViewById(R.id.tvtst_DLSno);
            holder.iv_tst_received = convertView.findViewById(R.id.iv_tst_received);
            holder.iv_tst_not_received = convertView.findViewById(R.id.iv_tst_not_received);
            holder.iv_tst_wrong_product = convertView.findViewById(R.id.iv_tst_wrong_product);
            convertView.setTag(holder);
        }else{
            holder = (CustomTestingProductsListAdapter.ViewHolder) convertView.getTag();
        }
        holder.DLSno.setText(pack_qr_det_infos.get(position).PRODUCTSLNO);
        holder.iv_tst_received.setOnClickListener(onClickListener(position));
    }catch (Exception e){
        Log.d(VilanConstants.TAG,"/Excp @listAdp"+ e.toString());
    }
    return convertView;
}

private View.OnClickListener onClickListener(final int position){
    return new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                CustomTestingProductsListAdapter.ViewHolder holder;
                holder = new CustomTestingProductsListAdapter.ViewHolder();
                holder.iv_tst_received = v.findViewById(R.id.iv_tst_received);
                holder.iv_tst_not_received = v.findViewById(R.id.iv_tst_not_received);
                holder.iv_tst_wrong_product = v.findViewById(R.id.iv_tst_wrong_product);
                Toast.makeText(mContext, "Item Received" , Toast.LENGTH_SHORT).show();
                holder.iv_tst_received.setImageResource(R.drawable.ic_received_green);
                holder.iv_tst_not_received.setImageResource(R.drawable.ic_not_received);
                holder.iv_tst_wrong_product.setImageResource(R.drawable.ic_wrong_product);
                Status = 0 ;
            }catch (Exception e){
                Log.e(VilanConstants.TAG,"/Excp due to"+e.toString());
            }

        }
    };
}


public class ViewHolder{
    private TextView tvProduct;
    private TextView DLSno;
    private ImageView iv_tst_received;
    private ImageView iv_tst_not_received;
    private ImageView iv_tst_wrong_product;
}
}

1 Ответ

0 голосов
/ 04 июля 2018
Update Your getView():

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    try{
        CustomTestingProductsListAdapter.ViewHolder holder;
        if(convertView == null){
            holder = new CustomTestingProductsListAdapter.ViewHolder();
            convertView = layoutInFlater.inflate(R.layout.tst_ver_prdouct_list_items,null);
            holder.tvProduct = convertView.findViewById(R.id.tv_qc_productName);
            holder.DLSno = convertView.findViewById(R.id.tvtst_DLSno);
            holder.iv_tst_received = convertView.findViewById(R.id.iv_tst_received);
            holder.iv_tst_not_received = convertView.findViewById(R.id.iv_tst_not_received);
            holder.iv_tst_wrong_product = convertView.findViewById(R.id.iv_tst_wrong_product);
            convertView.setTag(holder);
        }else{
            holder = (CustomTestingProductsListAdapter.ViewHolder) convertView.getTag();
        }
        holder.DLSno.setText(pack_qr_det_infos.get(position).PRODUCTSLNO);
        holder.iv_tst_received.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext, "Item Received" , Toast.LENGTH_SHORT).show();
                holder.iv_tst_received.setImageResource(R.drawable.ic_received_green);
                holder.iv_tst_not_received.setImageResource(R.drawable.ic_not_received);
                holder.iv_tst_wrong_product.setImageResource(R.drawable.ic_wrong_product);
                Status = 0 ;
            }
        });
    }catch (Exception e){
        Log.d(VilanConstants.TAG,"/Excp @listAdp"+ e.toString());
    }
    return convertView;
}
...