在自定义列表视图号码选择器本身换号 [英] Number picker in custom listview changing number by itself
问题描述
我的应用程序的工作中,我使用的是自定义ArrayAdaptor来填充我的listView.The customoized行包括在其活动有一定的文本框沿数字选择器。
现在的问题部分 - >
有趣的是,其他行,当我改变一个特定的行号选择器的其他一些拾荒者数得到改变automatically.I我的code近2天了,请您及时的帮助。
I am working on app in which I am using a Custom ArrayAdaptor to populate my listView.The customoized row includes a number Picker along with some text boxes in its activity. Now the Problem Part--> The funny part is that when i am changing the number of number picker in a particular row other number pickers of other rows get changed automatically.I have been staring at my code almost 2 days now .Please help
Custom_row.java
Custom_row.java
公共类Custom_row扩展ArrayAdapter {
public class Custom_row extends ArrayAdapter {
static Button ProPay;
Context context;
int newValcount=0;
public Custom_row(Context context, int resourceId,
List<DataItem> items) {
super(context, resourceId, items);
this.context = context;
}
private class ViewHolder {
TextView Items,Cost;
NumberPicker number;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
DataItem dataItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.activity_custom_row, null);
holder = new ViewHolder();
holder.Items = (TextView) convertView.findViewById(R.id.tvItem);
holder.Cost = (TextView) convertView.findViewById(R.id.tvCost);
holder.number=(NumberPicker)convertView.findViewById(R.id.numberPicker);
holder.number.setMaxValue(10);
holder.number.setMinValue(0);
holder.number.setValue(0);
holder.number.setFocusable(false);
ItemList.picker = holder.number;
holder.number.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
if(newVal!=0){
newValcount++;
if(newValcount > 0)
ProPay.setVisibility(View.VISIBLE);
}
else{
newValcount--;
if(newValcount==0)
ProPay.setVisibility(View.INVISIBLE);
}
}
});
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
holder.Items.setText(dataItem.getItem());
holder.Cost.setText(dataItem.getCost());
return convertView;
}
}
ItemList.java
`公共类ITEMLIST延伸活动{
公众的ListView ListView的;
公共静态列表dataItems;
按钮PayPro;
静态NumberPicker选择器;
ItemList.java `public class ItemList extends Activity { public ListView listView; public static List dataItems; Button PayPro; static NumberPicker picker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_list);
listView = (ListView)findViewById(R.id.itemList);
Custom_row.ProPay=(Button)findViewById(R.id.bProPay);
Custom_row adapter = new Custom_row(this,
R.layout.activity_custom_row, dataItems);
listView.setAdapter(adapter);
}
}
`
推荐答案
Custom_row.java
`holder.numberPicker.setOnValueChangedListener(新NumberPicker.OnValueChangeListener(){
@覆盖
公共无效onValueChange(NumberPicker选择器,INT OLDVAL,诠释的newval){
查看parentRow =(查看)picker.getParent();
ListView控件mListView =(ListView控件)parentRow.getParent();
最终诠释位置= mListView.getPositionForView(parentRow);
setPickerNumber(位置,的newval);
如果(的newval> OLDVAL){
newValcount = newValcount +的newval - OLDVAL;
Custom_row.java `holder.numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { View parentRow = (View)picker.getParent(); ListView mListView =(ListView)parentRow.getParent(); final int position = mListView.getPositionForView(parentRow); setPickerNumber(position,newVal); if(newVal > oldVal){ newValcount = newValcount + newVal - oldVal;
}
if(oldVal > newVal){
newValcount = newValcount + newVal - oldVal;
}
if(newValcount>0)
{
ProPay.setVisibility(View.VISIBLE);
}
else{
ProPay.setVisibility(View.INVISIBLE);
}
}
});`
这篇关于在自定义列表视图号码选择器本身换号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!