[英]ListView Items(TextView) is reloading everytime when Scrolling
我創建了一個應用程序,在該應用程序中我想執行諸如單擊按鈕來增加值和減少值的任務。它工作正常,但是我面臨的問題是,當我滾動列表視圖時,值是得到零0。
但是,當我單擊增加按鈕或減少按鈕時,它給了我真正的價值。
即:當我加2數量。 通過點擊。
當我滾動頁面時它將變為0,當我單擊addButton時將顯示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;
}
使用ListView
(或RecyclerView
),您的事件偵聽器永遠都不應更改View。
事件偵聽器應更新Model,然后調用notifyDataSetChanged()
。 notifyDataSetChanged()
告訴ListView
從更新的Model中刷新。
僅直接在getView()
對視圖進行更改。
final TextView displayInteger = (TextView) convertView.findViewById(R.id.integer_number);
int count = sia.get(position);
displayInteger.setText("" + count);
decrease.setEnabled(count > 0);
increase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int count = sia.get(position);
count++;
sia.put(position, count);
notifyDataSetChanged();
}
});
decrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int count = sia.get(position);
count--;
sia.put(position, count);
notifyDataSetChanged();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.