我制作了一个列表视图,每行包含以下项目
- 图像图标。
- 按钮。
- 文本视图
- 按钮。
- 文本视图。
第三个 textview 在两个按钮之间(按钮将增加和减少 textview 中显示的值)。当我增加和减少第一行的 textview 的值然后我转到第二行时,当我增加时它会采用前一个值并降低其价值。我正在使用计数器并在单击按钮时将计数器增加固定数量。
面临的问题:
- 我正在初始化计数器,但由于列表视图中有很多行,因此它将前一个值作为第二行的初始值。如何刷新计数器值?
- 如何将textview的初始值恢复到原来的值?
我使用了适配器类。
如何解决这个问题,因为我是 android 新手。告诉我如何做到这一点。
这是我的适配器类:
public class CartListViewAdapter extends BaseAdapter{
private Context mcontext;
private static int counter;
private String stringVal;
//private static int i = position;
public CartListViewAdapter(Context c){
mcontext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mThumbIds.length ;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View myView = convertView;
//if (convertView == null) { // if it's not recycled, initialize some attributes
//Inflate the layout
LayoutInflater inflater = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = inflater.inflate(R.layout.row, null);
// Add The Image!!!
ImageView iv = (ImageView)myView.findViewById(R.id.image);
iv.setImageResource(mThumbIds[position]);
// Add The Text!!!
TextView tv = (TextView)myView.findViewById(R.id.text);
tv.setText(names[position] );
final TextView tv1 = (TextView)myView.findViewById(R.id.text1);
tv1.setText(names1[position]);
TextView tv3 = (TextView)myView.findViewById(R.id.text3);
tv3.setText(names3[position]);
ImageButton button = (ImageButton)myView.findViewById(R.id.addbutton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Toast.makeText(mcontext,"Button is clicked",Toast.LENGTH_SHORT).show();
// counter+=250;
// stringVal = Integer.toString(counter);
// tv1.setText(stringVal);
for(int position=0;position<mThumbIds.length;position++){
counter = 250;
counter+=250;
stringVal = Integer.toString(counter);
tv1.setText(stringVal);
}
}
});
ImageButton button2= (ImageButton)myView.findViewById(R.id.subbutton);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Toast.makeText(mcontext,"Button is clicked",Toast.LENGTH_SHORT).show();
for(int position=0;position<mThumbIds.length;position++){
counter = 250;
counter-=250;
stringVal = Integer.toString(counter);
tv1.setText(stringVal);
}
}
});
return myView;
}
private Integer[] mThumbIds = {
R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher
};
private String[] names={"ab","cd","ef"};
private String[] names1 = {"250","250","250"};
private String[] names3 = {"yhhjd","hnbnn","fdffd"};
}
这是我的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:orientation="vertical"
android:padding="10sp" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp" />
</LinearLayout>
<ImageButton
android:id="@+id/addbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50sp"
android:layout_marginTop="20sp"
android:background="@android:color/background_light"
android:src="@android:drawable/ic_input_add" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3sp"
android:layout_marginTop="20sp" />
<ImageButton
android:id="@+id/subbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20sp"
android:background="@android:color/background_light"
android:src="@android:drawable/ic_input_add" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10sp"
android:layout_marginTop="20sp"
android:layout_weight="0.3"
android:gravity="right" />
</LinearLayout>
谢谢。