2016-02-11 39 views
0

嗨,朋友,我无法理解如何在列表视图的同一行中设置文本,其中我有两个按钮,文本视图在中心,但是当我我想递增或递减效果显示在下一行,但不是我想应用 Please check the Screen shot更改意图在一行,但影响显示在下一行

CartAdapter.java

public class Cart_Adapter extends BaseAdapter { 
    Context cartcontext; 
    List<MobiData> cartlist; 
    LayoutInflater inflater; 
    cartlist cartdata; 
    public ArrayList<Integer> quantity = new ArrayList<Integer>(); 
    CustomButtonListener customButtonListener; 
    public Cart_Adapter(Context cartcontext, List<MobiData> cartlist) { 
     this.cartcontext = cartcontext; 
     this.cartlist = cartlist; 
} 
@Override 
    public int getCount() { 
     return cartlist.size(); 
    } 

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

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 
@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     inflater = (LayoutInflater) cartcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 
      cartdata = new cartlist(); 
      convertView = inflater.inflate(R.layout.cart_row, parent, false); 
      cartdata.decrement = (TextView) convertView.findViewById(R.id.decrement); 
      cartdata.single = (TextView) convertView.findViewById(R.id.single); 
      cartdata.single.setTag(position); 
      cartdata.increment = (TextView) convertView.findViewById(R.id.increment); 
      cartdata.increment.setTag(position); 
      cartdata.cancel = (TextView) convertView.findViewById(R.id.cancel); 
      cartdata.vcmedname = (TextView) convertView.findViewById(R.id.vcmedname); 
      cartdata.vcmedprice = (TextView) convertView.findViewById(R.id.vcmedprice); 
      Typeface carttext = Typeface.createFromAsset(cartcontext.getAssets(), "fonts/fontawesome.ttf"); 
      cartdata.decrement.setTypeface(carttext); 
      cartdata.increment.setTypeface(carttext); 
      cartdata.cancel.setTypeface(carttext); 
      convertView.setTag(cartdata); 
     } else { 
      cartdata = (cartlist) convertView.getTag(); 
     } 
     MobiData newcart = cartlist.get(position); 
     cartdata.vcmedname.setText(newcart.getVcmedname()); 
     cartdata.vcmedprice.setText(newcart.getVcmedprice()); 
     cartdata.single.setText(newcart.getVcqty()); 
     final String cartids = newcart.getVcmedid(); 
     cartdata.cancel.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       cartlist.remove(position); 
       notifyDataSetChanged(); 
      } 
     }); 
     cartdata.increment.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (customButtonListener !=null){ 
        int plus = Integer.parseInt(cartdata.single.getText().toString()); 
       plus++; 
            int plus = Integer.parseInt(cartdata.single.getText().toString()); 
       plus++; 
       cartdata.single.setText(String.valueOf(plus)); 
       SharedPreferences viewpref = cartcontext.getSharedPreferences("datapref", Context.MODE_PRIVATE); 
       String cartuid = viewpref.getString("uid", ""); 
       String carttempid = viewpref.getString("tempid", ""); 
       String incremnturl = "http://sampletemplates.net/mobichemist/json/cart_process.php?mid=" + cartids + "&userid=" + cartuid + "&tempid=" + carttempid; 
       Log.d("Incremnturl", incremnturl); 
       JsonArrayRequest incrementarray = new JsonArrayRequest(Request.Method.GET, incremnturl, (String) null, new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject incrobj = response.getJSONObject(i); 
           int plus = Integer.parseInt(cartdata.single.getText().toString()); 
           plus++; 

           cartdata.single.setText(String.valueOf(plus)); 

          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 

        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.d("Incrementurl", String.valueOf(error)); 
        } 
       }); 
       incrementarray.setRetryPolicy(new DefaultRetryPolicy(50000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
         DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
          AppController.getInstance().addToRequestQueue(incrementarray); 


      } 
     }); 
     cartdata.decrement.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
int i = Integer.parseInt(cartdata.single.getText().toString()); 
      i--; 
      if (i <= 0) { 
       Toast.makeText(Single_Cart_Page.this, "Minimum Quantity is 1", Toast.LENGTH_SHORT).show(); 
      } else { 
       cartdata.single.setText(String.valueOf(i)); 
      } 
      } 
     }); 
     return convertView; 
    } 

    static class cartlist { 
     TextView decrement, single, increment, cancel, vcmedname, vcmedprice; 
    } 

回答

0

试试这个,并添加您的其他代码。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder holder; 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.cart_row, parent, false); 
     holder = new ViewHolder(); 
     holder.decrement = (TextView) convertView.findViewById(R.id.decrement); 
     holder.single = (TextView) convertView.findViewById(R.id.single); 
     holder.increment = (TextView) convertView.findViewById(R.id.increment); 
     holder.cancel = (TextView) convertView.findViewById(R.id.cancel); 
     holder.vcmedname = (TextView) convertView.findViewById(R.id.vcmedname); 
     holder.vcmedprice = (TextView) convertView.findViewById(R.id.vcmedprice); 

     convertView.setTag(holder); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
     Typeface carttext = Typeface.createFromAsset(cartcontext.getAssets(), "fonts/fontawesome.ttf"); 
     holder.decrement.setTypeface(carttext); 
     holder.increment.setTypeface(carttext); 
     holder.cancel.setTypeface(carttext); 

    MobiData newcart = cartlist.get(position); 
    holder.vcmedname.setText(newcart.getVcmedname()); 
    holder.vcmedprice.setText(newcart.getVcmedprice()); 
    holder.single.setText(newcart.getVcqty()); 
    final String cartids = newcart.getVcmedid(); 

    holder.cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      cartlist.remove(position); 
      notifyDataSetChanged(); 
     } 
    }); 
    return convertView; 
} 

static class ViewHolder { 

    private TextView decrement; 
    private TextView single; 
    private TextView increment; 
    private TextView vcmedname; 
    private TextView vcmedprice; 

} 
+0

尝试在空对象引用**上调用虚拟方法'java.lang.Object android.content.Context.getSystemService(java.lang.String)'我得到这个错误** – prominere

+0

非常感谢你我的夫人已经解决了你的帮助通过使用阵列适配器感谢很多 – prominere

+0

在这里我面临另一个问题当我滚动列表视图设置文本视图已重置请帮助我在这里 – prominere

0

使用ArrayAdaper,而不是底座适配器与变化的行ViewHolder。不要为所有视图手动设置setTag(位置)。 在此处查找ViewHolder示例https://dzone.com/articles/optimizing-your-listview。它将解决您的索引问题。 ViewHolder类设置所有视图的位置。 Hold View Objects in a View Holder

+0

跟着它没有工作 – prominere

+0

有没有与ViewHolder类的任何错误或相同的问题发生?因为我曾经用过这种方式,它总是适合我。 –

+0

没有错误,但值在第2行增加 – prominere

相关问题