我有一個listview的麻煩。我添加了一個複選框到列表視圖中來選擇項目。我的數據來自sqlite,所以我使用簡單的遊標適配器。我的名單長度是250行。我點擊一個複選框。當我向下滾動頁面(列表)時,每10行點擊一次複選框(例如,在我的屏幕顯示10行數據,當我滾動第11行時,該行的複選框已經點擊了。這個問題listview checkbox麻煩在android
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/checkBox"
android:textStyle="bold"
android:text="TextView" />
<TextView
android:id="@+id/nick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/nick"
android:layout_alignBottom="@+id/nick"
android:layout_alignParentRight="true"
android:text="TextView" />
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/name"
android:layout_toRightOf="@+id/checkBox"
android:text="TextView" />
</RelativeLayout>
,這是源代碼 包com.example.myprojects;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ListView;
public class send_message extends Activity {
private ListView list;
private EditText search;
SimpleCursorAdapter adapterx;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sendmessage);
list=(ListView)findViewById(R.id.list);
search=(EditText)findViewById(R.id.search);
loadfromdatabase();
}
private void loadfromdatabase() {
mydb info=new mydb(this);
info.open_read();
Cursor c = info.getAllData();
String[] columns = new String[] {mydb.KEY_NAME,mydb.KEY_PHONE, mydb.KEY_NICK};
int[] to = new int[] {R.id.name,R.id.phone, R.id.nick };
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter= new SimpleCursorAdapter(this, R.layout.activity_sendmesage_rows, c, columns, to,0);
list.setAdapter(adapter);
info.close();
}
}
編寫自定義適配器和getView做處理()的自定義適配器的方法與觀點 – Cris
你大概位置屬性的幫助需要創建一個自定義列表適配器。列表適配器將在可能的情況下重用行視圖,因此複選框的狀態是不確定的,並且取決於要重用的視圖。您的數據不會初始化複選框,因此目前沒有任何內容。自定義適配器將允許您初始化您的複選框。 –
thanx您的關注我會嘗試 –