嗨,我知道这个问题已经出现在这里,但答案对我没有帮助。好的,所以我有一个活动,列表视图绑定到我的班级 ZamowieniePoz 的 ArrayListAdapter。
public class ZamowieniePoz {
private int _idZamowienie;
private String _plu;
private String _nazwa;
private String _ilosc;
private String _jm;
private String _uwagi;
private String _dataSync;
private int _isSync; }
这是我的 listView 定义:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical">
<ListView
android:id="@+id/listView"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="fill_vertical"
android:layout_alignParentTop="true" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/listView" >
<Button
android:id="@+id/btnWyslij"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="WYŚLIJ ZAMÓWIENIE" />
<Button
android:id="@+id/btnPowrotZamowienieAdd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="POWRÓT" />
</LinearLayout>
这是 listView 行:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtPlu"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/txtIlosc"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/txtPlu"
android:layout_marginLeft="25sp"
android:lines="1"
android:inputType="numberDecimal" />
</RelativeLayout>
这是 ArrayListAdapter:
public class ZamowieniePozArrayAdapter extends ArrayAdapter<ZamowieniePoz> {
Context context;
int layoutResourceId;
ArrayList<ZamowieniePoz> data=null;
public ZamowieniePozArrayAdapter(Context context, int layoutResourceId, ArrayList<ZamowieniePoz> data) {
super(context, layoutResourceId, data);
this.layoutResourceId=layoutResourceId;
this.context=context;
this.data = data;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
ZamowienieHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row=inflater.inflate(layoutResourceId, parent, false);
holder = new ZamowienieHolder();
holder.txtPlu = (TextView)row.findViewById(R.id.txtPlu);
holder.txtIlosc=(EditText)row.findViewById(R.id.txtIlosc);
holder.txtIlosc.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
data.get(position).setIlosc(s.toString());
}
});
row.setTag(holder);
}
else{
holder = (ZamowienieHolder)row.getTag();
}
ZamowieniePoz zamowieniePoz = data.get(position);
holder.txtPlu.setText(zamowieniePoz.getPlu());
holder.txtIlosc.setText(zamowieniePoz.getIlosc());
return row;
}
static class ZamowienieHolder {
TextView txtPlu;
EditText txtIlosc;
}
}
这就是我将适配器绑定到 listView 的方式:
final DbHandler db = new DbHandler(ZamowienieAddActivity.this);
listView = (ListView) findViewById(R.id.listView);
arrayZamowieniePoz = db.getAllZamowienie();
arrayAdapterZamowieniePoz = new ZamowieniePozArrayAdapter(this, R.layout.zamowienie_add_list_items, arrayZamowieniePoz);
listView.setAdapter(arrayAdapterZamowieniePoz);
所以就是这样。问题是 listView 的第一行与最后一行重复。我认为这行代码有问题 data.get(position).setIlosc(s.toString()); 在 afterTextChange 中的 getView 中。
请帮助我,我不知道出了什么问题。谢谢你。