SimpleCursorAdapter
및 ViewBinder
이있는보기를 설정하고 ImageButton
을 ViewBinder
에 넣고 싶지만 onClick
이벤트를 설정하는 방법을 모르겠습니다. MySimpleCursorAdapter
을 만들고 거기에 넣어야합니까, 아니면 ViewBinder
클래스에 써야합니까? 나는ViewBinder의 ImageButton에 onClick 수신기를 설정하는 방법은 무엇입니까?
public class ChannelPoster {
private Bitmap poster;
private String channel;
private String path;
private String dblink;
public ChannelPoster(Bitmap pi, String c, String p, String d) {
poster = pi;
channel = c;
path = p;
dblink = d;
}
public Bitmap getPoster() { return poster; }
public String getChannel() { return channel; }
public String getPath() { return path; }
public String getDBlink() { return dblink; }
}
및 ChannelDB.java
데이터베이스 방법 1 : ListView`에있는 항목을 나타내는
public class ChannelViewBinder implements SimpleCursorAdapter.ViewBinder {
public boolean setViewValue(View view, final Cursor cursor, int columnIndex) {
if(view instanceof ImageView) {
ImageView iv = (ImageView) view;
byte[] img = cursor.getBlob(columnIndex);
iv.setImageBitmap(BitmapFactory.decodeByteArray(img, 0, img.length));
return true;
}
if(view instanceof ImageButton) {
ImageButton ib = (ImageButton) view;
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String dblink = cursor.getString(cursor.getColumnIndex(ChannelDB.KEY_DBLINK));
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("dblink",dblink);
intent.putExtras(bundle);
}
});
}
return false;
}
}
및 ChannelPoster.java
:
ViewBinder.java : 여기
내 코드입니다 관련 부분 만 게시 :public void createchannelEntry(ChannelPoster channel) {
openDB();
ByteArrayOutputStream out = new ByteArrayOutputStream();
channel.getPoster().compress(Bitmap.CompressFormat.PNG, 100, out);
ContentValues cv = new ContentValues();
cv.put(KEY_POSTER, out.toByteArray());
cv.put(KEY_CHANNEL, channel.getChannel());
cv.put(KEY_DBLINK, channel.getDBlink());
cv.put(KEY_PATH, channel.getPath());
mDb.insert(channelS_TABLE, null, cv);
closeDB();
}
마지막으로 목록 , Tv.java
는 :
ListView channellist = (ListView) findViewById(android.R.id.list);
mDB = new ChannelDB(this);
String[] columns = {mDB.KEY_ID, mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_PATH, mDB.KEY_DBLINK};
String table = mDB.channelS_TABLE;
Cursor c = mDB.getHandle().query(table, columns, null, null, null, null, null);
startManagingCursor(c);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.channelview,
c,
new String[] {mDB.KEY_POSTER, mDB.KEY_CHANNEL, mDB.KEY_DBLINK},
new int[] {R.id.poster, R.id.channel, R.id.douban});
adapter.setViewBinder(new ChannelViewBinder());
channellist.setAdapter(adapter);
이 도움이된다면 내가 항목을 추가하는 방법입니다 :
mDB.createchannelEntry(new ChannelPoster(image, "name" ,"link" ,"link"));
그냥 말해 더 많은 코드를 필요로합니다.