2014-10-08 49 views
2

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

@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(); 

        } 
       } 
      }); 

文字请帮我在此先感谢

+0

哪里代码获取特定的TextView值? – 2014-10-08 07:35:23

+1

holder.lserving_qty.getText()。toString() – 2014-10-08 07:37:48

+0

感谢@AbhishekChaubey指定以上 – 2014-10-08 07:47:11

回答

2
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); 
    } 

获取parentlayout位置,然后尝试相对于得到这个孩子的位置是布局,然后你会得到那个特定的行o n其中你点击了按钮

+0

如何获取childAt(位置)? – 2014-10-08 07:52:09

+0

感谢哥们,它通过改变一些上下文帮助我,并且它帮我 – 2014-10-08 08:36:37

+0

我已经做了一些编辑如此审查,以便其他用户可以得到只有那部分是有用的谢谢 – 2014-10-08 08:44:01

0

你的“持有者”是你的适配器的一个字段,所以每次调用getView()方法时它都会被重新分配,因此它的最终值是“最后一个”,这是你得到最后一个价值的原因。

如何解决您的问题?

关键是要找到带有加号按钮的convertview,因此您可以从中获得权利持有者。 假设您的加号按钮是convertview的直接子视图,你可以在onclick右ViewHolder(视图V)方法用下面的代码:

// 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. 
+0

感谢您的关注,但现在我有解决了它 – 2014-10-08 08:48:38