0
私はリストアプリケーションを作成しています。私はSQLiteデータベースを作成してアプリケーションにリンクしています。最初のタスク(Study)と2番目のタスク(Research)を設定したときのように、それぞれが名前を持つ2つの異なるアイテム(StudyResearch)を作成するような、新しいアイテムを作成している間に、ベースアダプター、カーソル、インフレーターのコード。SQLiteデータベースでベースアダプタを設定すると、データが互いに重なり合っています
class MyCustomAdapter extends BaseAdapter
{
ArrayList<ListItem> Items=new ArrayList<ListItem>();
MyCustomAdapter(ArrayList<ListItem> Items) {
this.Items=Items;
}
@Override
public int getCount() {
return (int) DatabaseUtils.queryNumEntries(db, "tasks");
}
@Override
public String getItem(int position) {
return Items.get(position).Name;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
String[] cols = {"id", "name", "time", "date"};
Cursor pointer = db.query("tasks", cols, null,null,null,null,null);
String name = "";
String time = "";
String date = "";
//String data = "";
while (pointer.moveToNext()){
name += pointer.getString(1);
time += pointer.getString(2);
date += pointer.getString(3);
//data += pointer.getInt(0) + " - " + pointer.getString(1) + " - " + pointer.getInt(2) +" - " + pointer.getInt(3);
}
LayoutInflater linflater =getLayoutInflater();
View view1=linflater.inflate(R.layout.row_view, null);
final CheckedTextView tvTasks =(CheckedTextView) view1.findViewById(R.id.tvTasks);
CheckedTextView tvDesc =(CheckedTextView) view1.findViewById(R.id.tvDesc);
tvTasks.setText(name);
tvDesc.setText(date + "(" + time + ")"); //date + "(" + time + ")"
tvTasks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tvTasks.toggle();
}
});
return view1;
}
これで問題は直ちに解決しました。今度は約4時間、これを調べてくれてありがとうございます。D –
@HadyElHawary私のプレゼンテーション。 – MikeT
@HadyElHawary PS上記の後に(if節/構造体の後と外に) 'pointer.Close()'を実際に置いてください。そうすれば、Cursorは常に閉じられています。 – MikeT