データベースからアイテムをリストし、それらのアイテムの一部をお気に入りとしてマークし、お気に入りに従ってデータベースを更新し続けるAndroidアプリケーションを作成しています。
My Aim is
:
listView の特定の項目をお気に入りとしてマークすると、その特定のリスト項目の画像が変更され、テーブルの対応する列がお気に入り (はい) またはお気に入りではない (いいえ) として更新されます。
データベースからアイテムをリストし、お気に入りに応じて画像ソースを変更し、データベースも更新することはうまくいきました。
My Problem is
:
1.特定のアイテムの画像を押すと、画像が変わりonce
、対応するデータベースも変わります。ただし、同じ画像another time
(前回クリックした画像)をクリックすると(画像does not change anything
は変更されず、更新されません)。
2. By scrolling the listView keep the listview as before changing the listView
.
このリンクを参照しbefore
てくださいuse database
。正常に動作していました。
データベースを使用した後、コードを次のように変更しました。
public class EpisodeCursorAdapter extends SimpleCursorAdapter {
public final String TAG = "EpisodeCursorAdapter";
//private String strurl = "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss";
public int favourite[];
private Cursor c,temp_cursor;
private Context context;
AABDatabaseManager db;
public EpisodeCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
temp_cursor=c;
this.context = context;
Log.d(TAG, "Object size is:" +c.getCount());
// favourite = new int[c.getCount()];
// for (int i = 0; i < c.getCount(); i++) {
// favourite[i] = 0;
// }
}
static class EpisodeHolder {
TextView title;
TextView desc;
ImageView thumbnail, favourite;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
Log.d(TAG,"NEw view in Cursor adapater"+" "+cursor.getCount());
Cursor cc=getCursor();
Log.d(TAG,"NEw view in Cursor adapater"+" "+cc.getCount()+ " "+cc.getInt(0));
// TODO Auto-generated method stub
return super.newView(context, cursor, parent);
}
public View getView(final int pos, View inView, ViewGroup parent) {
Log.d(TAG,"getView view in Cursor adapater " + pos);
View v = inView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.episode_row_view, null);
final EpisodeHolder holder = new EpisodeHolder();
db = new AABDatabaseManager(context);
holder.title = (TextView) v.findViewById(R.id.title);
holder.desc = (TextView) v.findViewById(R.id.description);
holder.favourite = (ImageView) v.findViewById(R.id.imageView1);
holder.thumbnail = (ImageView) v.findViewById(R.id.image);
v.setTag(holder);
Log.d(TAG, "Row tag is:" + v.getTag());
holder.favourite.setTag(pos);
holder.favourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int posi = (Integer) v.getTag();
//Log.d(TAG, "Cursor total count" + c.getCount() + " position:" + holder.favourite.getTag() + " view position:" + pos + " " + posi);
Log.d(TAG,"****************************** INFO REGARDING CLICKING ON FAVOURITE ************************");
Log.d(TAG,"Position of image clicked : " + posi);
temp_cursor.moveToPosition(posi);
int id = temp_cursor.getInt(temp_cursor.getColumnIndex("_id"));
String markedAsFav = temp_cursor.getString(temp_cursor.getColumnIndex("favourite"));
Log.d(TAG, "Id of clicked item is : " + id + " Favourite : " + markedAsFav);
if(markedAsFav.equalsIgnoreCase("no")) {
Log.d(TAG, "****In favourite onClick*** Was not as favourite... Mark as favourite...");
holder.favourite.setImageResource(R.drawable.ic_favourite_2);
db.updateRowAsFav(id, temp_cursor.getString(temp_cursor.getColumnIndex("favourite")));
} else if(markedAsFav.equalsIgnoreCase("yes")) {
Log.d(TAG, "****In favourite onClick*** Was as favourite... Mark it as not favourite...");
holder.favourite.setImageResource(R.drawable.ic_favourite_1);
db.updateRowAsFav(id, temp_cursor.getString(temp_cursor.getColumnIndex("favourite")));
}
}
});
} else {
((EpisodeHolder) v.getTag()).favourite.setTag(pos);
}
final EpisodeHolder holder = (EpisodeHolder) v.getTag();
this.c.moveToPosition(pos);
String imageUrl = this.c.getString(this.c
.getColumnIndex("table_epi_image"));
String titleStr = this.c.getString(this.c
.getColumnIndex("table_epi_title"));
String descStr = this.c.getString(this.c
.getColumnIndex("table_epi_description"));
if(c.getString(c.getColumnIndex("favourite")).equalsIgnoreCase("yes"))
{
holder.favourite.setImageResource(R.drawable.ic_favourite_2);
}
else
{
holder.favourite.setImageResource(R.drawable.ic_favourite_1);
}
holder.thumbnail.setTag(imageUrl);
new DownloadImagesTask().execute(holder.thumbnail);
//TextView title = (TextView) v.findViewById(R.id.title);
holder.title.setText(titleStr);
//TextView desc = (TextView) v.findViewById(R.id.description);
holder.desc.setText(descStr);
return (v);
}
}
私は何かが欠けていることを知っています。しかし、それが何であるかを見つけることはできませんでした。
これを解決するのを手伝ってください。
前もって感謝します!