【问题标题】:Getting Text From the ListView in customAdapter从 customAdapter 中的 ListView 获取文本
【发布时间】:2014-10-08 07:21:11
【问题描述】:

我在获取特定的 textview 值时遇到问题,我正在获取最后一个的值这是我的 customAdapter 的 getview() 代码 基本上我想要的是在加号按钮单击时更新数量文本,反之亦然

@Override
    public View getView(int position, View convertview, ViewGroup parent) {
LayoutInflater layoutInflater=((Activity) activity).getLayoutInflater();
        final HashMap<?, ?> map=list.get(position);
        if(convertview==null)
        {
        convertview=layoutInflater.inflate(R.layout.listviewdetails,parent,false);
        holder = new Viewholder();
        holder.title=(TextView) convertview.findViewById(R.id.lserving_size_grams);
        holder.servingsize=(TextView) convertview.findViewById(R.id.ltvprotiendesclabel);
        holder.Fiber=(TextView)convertview.findViewById(R.id.lFiberview);
        holder.lserving_qty=(TextView)convertview.findViewById(R.id.lvalueserving);
        holder.ckbox=(CheckBox)convertview.findViewById(R.id.lsave_item_box);
        holder.sminus=(ImageView)convertview.findViewById(R.id.limage_minus);
        holder.splus=(ImageView)convertview.findViewById(R.id.limage_plus);

        convertview.setTag(holder);

        }
        else
          {
             holder=(Viewholder)convertview.getTag();
          }

         //On Check Box Check Events


         holder.ckbox.setOnCheckedChangeListener(null);
         holder.splus.setOnClickListener(null);
         holder.ckbox.setChecked(checkedItems[position]);
         holder.ckbox.setTag(R.id.lsave_item_box, position);
         //holder.splus.setOnClickListener(null);
         holder.lserving_qty.setText(checkedAddSub[position] ? qtysavesearch[position] :                                                  map.get(Constants.NF_SERVING_SIZE_QTY).toString());

         holder.splus.setTag(R.id.limage_plus,position);


         /*
          * Plus Btn click Listener
          */
         holder.splus.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                     final int position = (Integer) v.getTag(R.id.limage_plus);

                     // holder.lserving_qty.getText(checkedAddSub[position] ? qtysavesearch[position] : map.get(Constants.NF_SERVING_SIZE_QTY).toString());

                     //counter=Math.round(Float.valueOf(serving_size_qty[position]));
                     counter=Math.round(Float.valueOf(holder.lserving_qty.getText().toString()));
                    if(counter>=1)
                    {   
                        counter++;
                        qtysavesearch[position]=String.valueOf(counter);
                        checkedAddSub[position]=true;
                        notifyDataSetChanged();

                    }
                    else
                    {
                        checkedAddSub[position]=false;
                        notifyDataSetChanged();

                    }
                }
            });

请帮助我提前谢谢

【问题讨论】:

  • 获取特定 textview 值的代码在哪里?
  • holder.lserving_qty.getText().toString()
  • 感谢@AbhishekChaubey 指定上述内容
  • 欢迎您@SpryTechies
  • @Leog holder.lserving_qty.getText().toString()

标签: android listview android-listview custom-adapter


【解决方案1】:
public void onShowButtonClickHandler(View v) {
        RelativeLayout rl = (RelativeLayout) v.getParent();
        LinearLayout ll = (LinearLayout) rl.getChildAt(0);
        TextView textView = (TextView) ll.getChildAt(0);
        if (!isTablet) {
            getSupportFragmentManager().beginTransaction()
                    .show(mapFragment)
                    .setCustomAnimations(R.anim.slide_out, R.anim.slide_out)
                    .hide(vehiclesFragment)
                    .commit();
            isVehiclesOpen = false;
        }
        vehicleToShowHide = textView.getText().toString();
        mapFragment.hideVehicle(vehicleToShowHide);
    }

获取父布局位置,然后尝试获取该子布局相对于该布局的位置,然后您将获得单击按钮的特定行

【讨论】:

  • 如何获取childAt(position)?
  • 感谢哥们,它通过更改一些上下文帮助了我,这让我很高兴
  • 我已经进行了一些编辑,所以请审查,以便其他用户只能获得有用的部分谢谢你
【解决方案2】:

您的“持有人”是适配器的一个字段,因此每次调用 getView() 方法时都会重新分配它,因此它的最终值是“最后一个”,这就是您获得最后一个的值。

如何解决您的问题?

关键是找到带有加号按钮的转换视图,因此您可以从中获得正确的持有人。 假设你的加号按钮是convertview的直接子View,你可以在onClick(View v)方法中获取正确的ViewHolder,代码如下:

// Get the View Parent of the plus button, and its parent surely is the convertview.
ViewParent vp = v.getParent();
ViewHolder holder = (ViewHolder)((View)vp).getTag();
// Now you have the right holder and you can get the proper text with it.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多