Java 对一行进行更改,但效果将显示在下一行中

Java 对一行进行更改,但效果将显示在下一行中,java,android,listview,Java,Android,Listview,嗨,朋友们,我不知道如何在列表视图的同一行中设置文本,我有两个按钮,文本视图位于中间,但当我尝试递增或递减时,效果显示在下一行,而不是我希望应用更改的行上 CartAdapter.java public class Cart_Adapter extends BaseAdapter { Context cartcontext; List<MobiData> cartlist; LayoutInflater inflater; cartlist cart

嗨,朋友们,我不知道如何在列表视图的同一行中设置文本,我有两个按钮,文本视图位于中间,但当我尝试递增或递减时,效果显示在下一行,而不是我希望应用更改的行上

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;
    }
公共类Cart\u适配器扩展了BaseAdapter{
语境与语境;
清单清单;
充气机;
cartlistcartdata;
公共ArrayList数量=新建ArrayList();
CustomButtonListener CustomButtonListener;
公共购物车适配器(上下文购物车上下文,列表购物车列表){
this.cartcontext=cartcontext;
this.cartlist=cartlist;
}
@凌驾
public int getCount(){
返回cartlist.size();
}
@凌驾
公共对象getItem(int位置){
返回cartlist.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
充气器=(LayoutFlater)cartcontext.getSystemService(Context.LAYOUT\u充气器\u服务);
if(convertView==null){
cartdata=新的cartlist();
convertView=充气机。充气(R.layout.cart_行,父项,false);
cartdata.decrement=(TextView)convertView.findViewById(R.id.decrement);
cartdata.single=(TextView)convertView.findViewById(R.id.single);
cartdata.single.setTag(位置);
cartdata.increment=(TextView)convertView.findViewById(R.id.increment);
cartdata.increment.setTag(位置);
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.减量.设置字体(carttext);
cartdata.increment.setTypeface(carttext);
cartdata.cancel.setTypeface(carttext);
setTag(cartdata);
}否则{
cartdata=(cartlist)convertView.getTag();
}
MobiData newcart=cartlist.get(位置);
cartdata.vcmedname.setText(newcart.getVcmedname());
cartdata.vcmedprice.setText(newcart.getVcmedprice());
cartdata.single.setText(newcart.getVcqty());
最后一个字符串cartids=newcart.getVcmedid();
cartdata.cancel.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
cartlist.移除(位置);
notifyDataSetChanged();
}
});
cartdata.increment.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(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));
SharedReferences viewpref=cartcontext.GetSharedReferences(“datapref”,Context.MODE\u PRIVATE);
String cartuid=viewpref.getString(“uid”,“uid”);
String cartempid=viewpref.getString(“tempid”,”);
字符串增量字符串=”http://sampletemplates.net/mobichemist/json/cart_process.php?mid=“+cartids+”&userid=“+cartuid+”&tempid=“+carttempid;
Log.d(“增量”,增量);
JsonArrayRequest incrementarray=新的JsonArrayRequest(Request.Method.GET,incremnturl,(String)null,new Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
对于(int i=0;i如果(i使用ArrayAdaper,而不是带有ViewHolder的基本适配器。不要为所有视图手动设置setTag(位置)。

在此处查找ViewHolder示例。它将解决您的索引问题。ViewHolder类将设置所有视图的位置。还可以查找有关的详细说明尝试此操作并添加其他代码

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

 }

ViewHolder类是否有任何错误或出现了相同的问题?因为我曾经使用过这种方法,并且它始终适用于我。没有错误,但第2Attempt行中的值是increment以调用虚拟方法“java.lang.Objec”