카테고리 없음
[기계적 인조 인간] EditText CursorAdapter에서 클릭 내보기 변경
행복을전해요
2021. 1. 15. 07:22
유지 관리 ViewHolder
및 convertView
글로벌 참조로 문제가 있습니다. 이 값은를 newView()
호출 할 때 마다 업데이트됩니다 . 댓글과 관련하여 도움이 될 것입니다 ...
public class SampleAdapter extends CursorAdapter {
private Context mContext;
private LayoutInflater mInflater;
private String str_item_id;
private String str_item_type;
private String str_item_name;
private String str_item_cost;
String str_edt_txt_change;
int quantity = 1;
double amount = 0;
int int_edttxt = 2;
int block_not_chk_for_first_click;
SQLiteDatabase dh = DatabaseHelpereKOT.getInstance().getDb();
public SampleAdapter(Context context, Cursor c) {
super(context, c);
mInflater = LayoutInflater.from(context);
mContext = context;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder holder = (ViewHolder) view.getTag();
System.out.println("inside bind view");
holder.getTvTitle().setText(
cursor.getString(cursor.getColumnIndex("item_name")));
holder.getTvPrice().setText(
cursor.getString(cursor.getColumnIndex("Item_cost")));
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
view.setTag(R.id.item_name, _id);
String type = cursor.getString(cursor.getColumnIndex("item_type"));
if (type.trim().startsWith("n") || type.trim().startsWith("N")) {
// holder.getImType().setPadding(6, 0, 0, 0);
holder.getImType().setBackgroundResource(R.drawable.non_veg);
} else {
holder.getImType().setBackgroundResource(R.drawable.veg);
}
int ID = cursor.getInt(0);
holder.getAddImage().setTag(ID);
holder.getAddImage().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("button click");
System.out.println("quantity for item :::::::" + int_edttxt);
int id = (Integer) v.getTag();
addToDB(id);
System.out.println("i m in ryt [palce");
View parent = (View) v.getParent();
EditText editText = (EditText) parent.findViewById(R.id.edtxt_qty_id);
String text = editText.getText().toString();
// Now you got the text in EditText. You can save this text
}
});
System.out.println("end of bind view");
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View convertView = mInflater.inflate(R.layout.list_data_item, parent,
false);
block_not_chk_for_first_click = 1;
ViewHolder holder = new ViewHolder();
ImageView imageView = (ImageView) convertView
.findViewById(R.id.add_image);
holder.setAddImage(imageView);
holder.setImType((ImageView) convertView
.findViewById(R.id.veg_nv_image));
holder.setTvTitle((TextView) convertView.findViewById(R.id.item_name));
holder.setTvPrice((TextView) convertView.findViewById(R.id.item_cost));
convertView.setTag(holder);
System.out.println("check edit text click 222222");
return convertView;
}
void addToDB(Integer objId) {
if (objId != null) {
int _id = objId;
boolean flag = true;
System.out.println("on Add button click " + _id);
Cursor cursor = dh.query(DatabaseHelpereKOT.RESTAURANT_menu_temp,
new String[] { "_id", "item_id", "item_type", "item_name",
"Item_cost" }, "_id=?",
new String[] { String.valueOf(_id) }, null, null, null);
if ((cursor != null) && (cursor.getCount() > 0)
&& cursor.moveToFirst()) {
str_item_id = cursor
.getString(cursor.getColumnIndex("item_id"));
str_item_type = cursor.getString(cursor
.getColumnIndex("item_type"));
str_item_name = cursor.getString(cursor
.getColumnIndex("item_name"));
str_item_cost = cursor.getString(cursor
.getColumnIndex("Item_cost"));
amount = int_edttxt * Integer.parseInt(str_item_cost);
System.out.println("iten name ::::::::: " + str_item_name);
cursor.close();
ContentValues orderValues = new ContentValues();
orderValues.put("item_id", str_item_id);
orderValues.put("item_type", str_item_type);
orderValues.put("item_name", str_item_name);
orderValues.put("Item_cost", str_item_cost);
orderValues.put("qty", int_edttxt);
orderValues.put("amount", amount);
dh.insert(DatabaseHelpereKOT.RESTAURANT_menu_order, null,
orderValues);
block_not_chk_for_first_click = 2;
System.out.println("block not chk after insertion"
+ block_not_chk_for_first_click);
System.out.println("data inserted at order");
String msg = "Menu Item Added Successfully";
Message msgObject = new Message();
msgObject.what = 1;
msgObject.obj = msg;
addMenuItemHandler.sendMessage(msgObject);
}
}
}
public Handler addMenuItemHandler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
if (msg.what == 1) {
System.out.println("inside handler");
Toast.makeText(mContext, (String) msg.obj, Toast.LENGTH_SHORT)
.show();
}
};
};
public static class ViewHolder {
private TextView tvTitle;
private TextView tvPrice;
private TextView tvDescription;
private ImageView imType;
private EditText edtxt_qty;
private ImageView addImage;
public ImageView getAddImage() {
return addImage;
}
public void setAddImage(ImageView imageView) {
addImage = imageView;
}
public TextView getTvTitle() {
return tvTitle;
}
public void setTvTitle(TextView tvTitle) {
this.tvTitle = tvTitle;
}
public TextView getTvPrice() {
return tvPrice;
}
public void setTvPrice(TextView tvPrice) {
this.tvPrice = tvPrice;
}
public TextView getTvDescription() {
return tvDescription;
}
public void setTvDescription(TextView tvDescription) {
this.tvDescription = tvDescription;
}
public ImageView getImType() {
return imType;
}
public void setImType(ImageView imType) {
this.imType = imType;
}
public EditText getEdtTxtQty() {
return edtxt_qty;
}
public void setEdtxtQty(EditText edtTxtqty) {
this.edtxt_qty = edtTxtqty;
}
}
}
-------------------여기에 태그를 사용하는 최소한의 예가 있지만 위의 질문과 많이 관련이 없을 수도 있습니다. 목적은 사용법을 보여주는 것입니다.
private class CurAdapter extends CursorAdapter implements SectionIndexer{
AlphabetIndexer mAlphabetIndexer;
public CurAdapter(Context context, Cursor c, int flags) {
super(context, c, flags);
mAlphabetIndexer = new AlphabetIndexer(c,
c.getColumnIndex("Name"),"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
mAlphabetIndexer.setCursor(c);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
((TextView) view.getTag(R.id.textView1)).setText(cursor.getString(cursor.getColumnIndexOrThrow("Name")));
String manuplate = dateConvert(cursor.getString(cursor.getColumnIndexOrThrow("BirthDate")));
if(manuplate.contains("0001")){
manuplate = manuplate.replace("0001", "");
}
((TextView) view.getTag(R.id.textView2)).setText((manuplate));
((TextView) view.getTag(R.id.textView1)).setTypeface(tf, Typeface.BOLD);
((TextView) view.getTag(R.id.textView2)).setTypeface(tf1);
String image = cursor.getString(cursor.getColumnIndexOrThrow("imageUri"));
System.out.println("Image Uri is:"+image);
if(image.contains("jpg") || image.contains("png")){
/* File IMG_FILE = new File(image);
Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(IMG_FILE.getAbsolutePath(), options);*/
File f = new File(image);
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
((ImageView) view.getTag(R.id.imageView1)).setImageBitmap(bmp);
}else{
Uri IMAGE_URI = Uri.parse(image);
IMAGE_URI= Uri.withAppendedPath(IMAGE_URI, Contacts.Photo.CONTENT_DIRECTORY);
try{
((ImageView) view.getTag(R.id.imageView1)).setImageURI(IMAGE_URI);
}catch (Exception e){
System.out.println(e);
}
}
///Buffered stream handling if no image is present display a default image.
if (((ImageView) view.getTag(R.id.imageView1)).getBackground()== null){
((ImageView) view.getTag(R.id.imageView1)).setBackgroundResource(R.drawable.default_img);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(R.layout.contacts_list, null);
TextView tv = (TextView) view.findViewById(R.id.textView1);
TextView tv1 = (TextView) view.findViewById(R.id.textView2);
ImageView iv = (ImageView) view.findViewById(R.id.imageView1);
view.setTag(R.id.textView1, tv);
view.setTag(R.id.textView2, tv1);
view.setTag(R.id.imageView1, iv);
return view;
}
@Override
public int getPositionForSection(int sectionIndex) {
return mAlphabetIndexer.getPositionForSection(sectionIndex);
}
@Override
public int getSectionForPosition(int position) {
return mAlphabetIndexer.getSectionForPosition(position);
}
@Override
public Object[] getSections() {
return mAlphabetIndexer.getSections();
}
}
출처
https://stackoverflow.com/questions/22006809