文本值在自定义列表视图时滚动的android列表视图改变? [英] Text values are changed in customized listview when scroll the listview in android?
问题描述
在我的应用程序正在使用自定义列表视图与文本视图,编辑文本和buttons.When我点击按钮,在0号位置,是改变0,文中观点值个位置。当我滚动向下在列表视图中的值0个位置文本视图改变为初始状态什么都。
In my application am using customized list-view with text view,edit-text and buttons.When i click the button in "0"Th position and am change the text view values in "0"Th position .when i scroll down the list-view the values in "0"Th position text view changed to what ever in initial state.
我的基本适配器类
public class sample extends BaseAdapter{
public ArrayList<HashMap<String, String>> list;
Activity activity;
public sample(Activity activity,ArrayList<HashMap<String, String>> list) {
super();
this.activity = activity;
this.list = list;
}
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
class ViewHolder {
Button order;
TextView item_name, order_qty;
EditText et_quantity;
}
public View getView(final int position, View convertView,final ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
LayoutInflater inflater = activity.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.order_custom, null);
holder = new ViewHolder();
holder.order = (Button) convertView.findViewById(R.id.order);
holder.item_name = (TextView) convertView.findViewById(R.id.item_name);
holder.order_qty = (TextView) convertView.findViewById(R.id.order_count);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try{
HashMap<String, String> map = list.get(position);
holder.item_name.setText(map.get("name"));
//Log.v("Available or not", ""+map.get("available"));
}catch(Exception e){
e.printStackTrace();
}
holder.order.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
//here am click the button to change order count text value
int qty = Integer.valueOf(""+holder.order_qty.getText().toString());
qty++;
holder.order_qty.setText(""+String.valueOf(qty));
}
});
return convertView;
}
}
我不知道为什么文本值更改为初始状态,向下滚动自定义列表view.Can任何人知道,请帮我解决这个问题。
i don't know why the text values changed to initial state when scroll down the customized list view.Can any one know please help me to solve this issue
推荐答案
现在的问题是,你不使用的每一行有不同的看法持有人,并回收您的列表项时,浏览您的持有人togheter洗牌。
The problem is that you are not using a different view holder for every line, and that when recycling your list item views your holders are shuffled togheter.
您可以看到这只是添加最终诠释位置
字段到你的持有人,在哪里存储getView位置参数;调试时,你会看到什么情况发生。
You can see this simply adding a final int position
field to your holder, where to store the getView position parameter; debugging, you will see what happen.
因此,你不能用持有人来存储量值
此外,不使用变量列表
来店量的值。这code为我工作:
Furthermore, you are not using the variable list
to store quantity values. This code is working for me:
public View getView(final int position, View convertView,final ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = activity.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.order_custom, null);
holder = new ViewHolder();
holder.order = (Button) convertView.findViewById(R.id.order);
holder.item_name = (TextView) convertView.findViewById(R.id.item_name);
holder.order_qty = (TextView) convertView.findViewById(R.id.order_count);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try{
HashMap<String, String> map = list.get(position);
holder.item_name.setText(map.get("name"));
holder.order_qty.setText(map.get("quantity"));
//Log.v("Available or not", ""+map.get("available"));
}catch(Exception e){
e.printStackTrace();
}
holder.order.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
//here am click the button to change order count text value
int qty = Integer.valueOf(list.get(position).get("quantity"));
qty++;
holder.order_qty.setText(""+String.valueOf(qty));
list.get(position).put("quantity", qty+"");
}
});
return convertView;
}
这篇关于文本值在自定义列表视图时滚动的android列表视图改变?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!