2016-02-28 21 views
1

我已成立一個TextView的值從一個ArrayList這樣無法使用之前設置的customAdapter使用按鈕更改textview值,爲什麼?

 mealCounterTV = (TextView) view.findViewById(R.id.counterTV); 
     mealCounterTV.setText(quantityList.get(position)); 

有一個按鈕,通過點擊這我試圖改變TextView的值,該值被改變,但無法設置改變的值以textView,

addBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       count = Integer.parseInt(mealCounterTV.getText().toString()); 
       count++; 
       mealCounterTV.setText(String.valueOf(count)); 
       notifyDataSetChanged(); 
      } 
     }); 

任何人都可以指出我在哪裏做錯了? 我的整個適配器是這樣的,

package com.nerdcastle.nazmul.mealdemo; 

import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Button; 
import android.widget.TextView; 

import java.util.ArrayList; 


class AdapterForMealSubmission extends BaseAdapter { 
    ViewHolder holder; 
    Activity activity; 
    ArrayList<String> employeeNameList = new ArrayList<>(); 
    ArrayList<String> quantityList = new ArrayList<>(); 

    public AdapterForMealSubmission(Activity activity, ArrayList<String> employeeNameList, ArrayList<String> quantityList) { 
     super(); 
     this.activity = activity; 
     this.employeeNameList = employeeNameList; 
     this.quantityList = quantityList; 
    } 

    public int getCount() { 
     return quantityList.size(); 
    } 

    public Object getItem(int position) { 
     return quantityList.get(position); 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    private class ViewHolder { 
     public TextView nameTV; 
     public Button deleteBtn; 
     public Button addBtn; 
     public TextView mealCounterTV; 
    } 


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

     LayoutInflater inflater = activity.getLayoutInflater(); 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.custom_row_for_meal_submission, null); 
      holder = new ViewHolder(); 
      holder.mealCounterTV = (TextView) convertView.findViewById(R.id.counterTV); 
      holder.nameTV = (TextView) convertView.findViewById(R.id.nameTV); 
      holder.deleteBtn = (Button) convertView.findViewById(R.id.minus_btn); 
      holder.addBtn = (Button) convertView.findViewById(R.id.add_btn); 
      convertView.setTag(holder); 

      holder.addBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        int count = Integer.parseInt(holder.mealCounterTV.getText().toString()); 
        count++; 
        holder.mealCounterTV.setText("" + count); 
        notifyDataSetChanged(); 
       } 
      }); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.mealCounterTV.setText(quantityList.get(position)); 
     holder.nameTV.setText(employeeNameList.get(position)); 
     holder.addBtn.setTag(holder); 
     holder.deleteBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int count = Integer.parseInt(holder.mealCounterTV.getText().toString()); 
       if (count > 0) { 
        count--; 
       } 
       holder.mealCounterTV.setText("" + count); 
       notifyDataSetChanged(); 
      } 
     }); 

     return convertView; 
    } 

} 
+0

請詳細解釋您的問題。像你正在改變數組列表值或在活動? –

+0

我正在做的一切在適配器類 – minion

回答

3

嘗試從點擊聽衆取出notifyDataSetChanged。因爲這將導致適配器重新綁定列表中的值並將列表重置爲初始狀態。

+0

很多非常感謝您的有幫助的建議 – minion

+0

是的。他沒有改變陣列數據的價值。 –

0

在設置文本之後,您有沒有理由在做notifyDataSetChanged()?因爲每次你這樣做,它都會覆蓋你傳遞的數據集中的textView值。

相關問題