我創建了一個應用程序,我想執行一個任務喜歡添加值並通過單擊按鈕減少值。它工作正常,但我面臨的問題是當我滾動列表視圖然後價值是零0 0.ListView Items(TextView)每次重新加載時滾動
但是,當我點擊增加按鈕或減少按鈕然後它給了我真正的價值。
即:當我添加2個數量。通過點擊。
,當我滾動頁面,然後就會變成0,當我在Add按鈕點擊後將給了我3
,或者當我滾動頁面,然後就會變成0,當我點擊減號按鈕它將給我1
當我滾動它離開它的TextView displayInteger被丟棄並忘記它的值。
這裏的完整代碼: -
listViewadapter.java
@Override
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
TextView mname , pmethod2, pamount3, premark4;
final ImageView increase,decrease;
final Button add;
inflater = (LayoutInflater) cntx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = LayoutInflater.from(cntx);
convertView = inflater.inflate(R.layout.raw_order, parent,
false);
decrease = (ImageView) convertView.findViewById(R.id.decrease);
increase= (ImageView) convertView.findViewById(R.id.increase);
add= (Button) convertView.findViewById(R.id.add);
mname = (TextView) convertView.findViewById(R.id.mname);
mname.setText(" " + o_aproduct.get(position));
final TextView displayInteger = (TextView) convertView.findViewById(R.id.integer_number);
//add.setText(" " +count);
increase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int count = sia.get(position);
count= count + 1;
sia.put(position, count);
displayInteger.setText("" + count);
add.setText(" " +count);
if (count > 0) { decrease.setEnabled(true); }
}
});
decrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int count = sia.get(position);
count= count- 1;
sia.put(position, count);
displayInteger.setText("" + count);
add.setText(" " +count);
if (count > 0)
{decrease.setEnabled(true);}
else if (count == 0){
decrease.setEnabled(false);
}
else { decrease.setEnabled(false);}
}
});
return convertView;
}
使用recylerview而不是列表視圖 –
的我需要只用..所有的 – Andie
首先不使用可重複使用的概念,這就是爲什麼你得到這樣的問題ListView控件執行此任務。所以首先使用它可重用,然後創建一個模型並存儲舊的計數值。所以請看看這個視頻,它是用適配器解釋列表視圖,希望它能幫助你。 ** [使用自定義適配器的ListView](https://www.youtube.com/watch?v=UMSdD05NVYQ)** –