2
我有自定義list_row:刪除項目,在ListView的一個按鈕自定義ArrayAdapter
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content" android:baselineAligned="false">
<Button android:layout_width="30dip" android:layout_marginTop="7dip" android:gravity="right"
android:id="@+id/delete" android:layout_height="30dip" android:background="@drawable/delete"
android:layout_gravity="top"></Button>
<TextView android:textSize="20dip"
android:text="TextView" android:id="@+id/tavsiye" android:layout_marginTop="10dip"
android:layout_gravity="top" android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
我有這樣的一個ListView:
<ListView
android:id="@+id/tavsiyeler"
android:layout_height="300dip"
android:layout_width="170dip"
android:fastScrollEnabled="true"
android:scrollbars="vertical"/>
和延伸ArrayAdapter自定義適配器:
public class HekimTavsiyeleriAdapter extends ArrayAdapter<String> {
private Context context;
private int resource;
private ArrayList<String> tavsiyeler;
public HekimTavsiyeleriAdapter(Context context, int resource,
ArrayList<String> objects) {
super(context, resource, objects);
this.context=context;
this.resource=resource;
this.tavsiyeler=objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(this.resource, null);
}
if (this.tavsiyeler.size()!=0) {
TextView tavsiye = (TextView) v.findViewById(R.id.tavsiye);
Button but= (Button) v.findViewById(R.id.delete);
if (tavsiye != null) {
String st=this.tavsiyeler.get(position);
tavsiye.setText(st);
}
if(but!=null){
but.setId(position);
but.setOnClickListener(new AdapterView.OnClickListener() {
@Override
public void onClick(View v) {
int id=v.getId();
tavsiyeler.remove(id);
notifyDataSetChanged();
}
});
}
}
return v;
}
我正在創建適配器並填寫如下列表:
eklenecekTavsiyeler=new ArrayList<String>();
adapter= new HekimTavsiyeleriAdapter(context,
R.layout.hekim_tavsiyeleri_row, eklenecekTavsiyeler);
ListView tavsiyelerListesi = (ListView)findViewById(R.id.tavsiyeler);
tavsiyelerListesi.setAdapter(adapter);
,並增加新的項目,如認爲:
this.adapter.add(<some-string>);
this.adapter.notifyDataSetChanged();
和我的列表視圖見過這樣的:
http://imageshack.us/photo/my-images/97/listir.jpg/
這裏是我的問題:
我加入新項目列表。我有固定的清單高度。當我填充列表直到所有高度被佔用時,然後向列表添加一個新項目,這需要滾動,因爲列表高度溢出。我添加的最後一個項目是錯誤的ID,當我按下十字按鈕時,它會刪除錯誤的項目。但是,當列表沒有溢出時,一切正常。溢出後,按鈕的ID設置錯誤(似乎是隨機)。順便說一句,爲了設置按鈕的ID,我使用getView的位置參數。
在此先感謝。
謝謝。這是答案。 – aod