如何获取自定义列表中的editext的所有值从android数据库中的数据库editext
问题描述:
我从MySQL数据库获取menunames,并追加到编辑自定义列表视图使用base adapter.now我更改editext值menunames一些。现在我想摆脱首先editext持续如何获取自定义列表中的editext的所有值从android数据库中的数据库editext
Eg:x,y,z,.... are menunames coming from database it append editext(cusom listview)
i am change editext value y to b
now i want x,b,z...... values in arraylisst..
我的基adapger类
public class EditMainMenulistview extends BaseAdapter {
public final ArrayList<String> arr = new ArrayList<String>();
protected static Context Context = null;
int i;
public String editnewmainmenu, menuname, edittext;
String qrimage;
Bitmap bmp, resizedbitmap;
Bitmap[] bmps;
Activity activity = null;
private LayoutInflater inflater;
private ImageView[] mImages;
String[] itemimage;
TextView[] tv;
String itemname, itemcode;
public String[] itemnames, itemcodes;
HashMap<String, String> map = new HashMap<String, String>();
public EditMainMenulistview(Context context, JSONArray imageArrayJson) {
Context = context;
// inflater =
// (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// imageLoader=new ImageLoader(activity);
inflater = LayoutInflater.from(context);
this.mImages = new ImageView[imageArrayJson.length()];
this.bmps = new Bitmap[imageArrayJson.length()];
this.itemnames = new String[imageArrayJson.length()];
this.itemcodes = new String[imageArrayJson.length()];
try {
for (i = 0; i < imageArrayJson.length(); i++) {
JSONObject image = imageArrayJson.getJSONObject(i);
qrimage = image.getString("menuimage");
itemname = image.getString("menuname");
itemcode = image.getString("menucode");
itemnames[i] = itemname;
itemcodes[i] = itemcode;
byte[] qrimageBytes = Base64.decode(qrimage.getBytes());
bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0,
qrimageBytes.length);
int width = 100;
int height = 100;
resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height,
true);
bmps[i] = bmp;
mImages[i] = new ImageView(context);
mImages[i].setImageBitmap(resizedbitmap);
mImages[i].setScaleType(ImageView.ScaleType.FIT_START);
// tv[i].setText(itemname);
}
System.out.println(itemnames[i]);
} catch (Exception e) {
// TODO: handle exception
}
}
public int getCount() {
return mImages.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.editmainmenulist, null);
holder.caption = (EditText) convertView
.findViewById(R.id.editmaimenu);
holder.caption1 = (ImageView) convertView
.findViewById(R.id.menuimage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// Fill EditText with the value you have in data source
holder.caption.setText(itemnames[position]);//i append menunames here
holder.caption.setId(position);
holder.caption1.setImageBitmap(bmps[position]);
// we need to update adapter once we finish with editing
arr.add(holder.caption.getText().toString());//here i am try to get all values change and without edit text values but it get only menunames values
return convertView;
}
}
class ViewHolder {
EditText caption;
ImageView caption1;
}
class ListItem {
String caption;
}
请帮我
答
我想你会需要使用OnTouch
为EditText
得到它Id和在该EditText中添加TextWatcher
以获取Editext。
这里是触摸监听器实例中的EditText
OnTouchListener mEdittextTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int childPosition = v.getId;
Log.i("Log_tag", "Edittext Position is " + childPosition);
//Here you will get your EditText Position.
//saveData=true;
//setChildPosition(childPosition);
return false;
}
};
现在实现了您的活动TextWatcher
和getView添加修改你这样的BaseAdapter
的。
holder.caption.removeTextChangedListener(ExpandableListPage.this);
holder.caption.setOnTouchListener(mEdittextTouchListener);
holder.caption.addTextChangedListener(ExpandableListPage.this);
现在一定要先从EditText上删除TextWatcher,并添加它。因为当你的列表视图视图是要显示的EditText将调用TextWather方法,以防止这一点,我们总是需要删除它,然后添加它。
@Override
public void afterTextChanged(Editable s) {
Log.v("Log_tag", "After TextChanged" + s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
Log.i("Log_tag", "Before TextChanged" + s.toString());
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("Log_tag", "ontext Changed"+ s.toString());
if(count!=0){
if(saveData){
//Add your EditText Change Value here
arr.add(s.toString());
}
}
}
}
我试过我们的代码,但我得到错误。请看我的代码添加你的代码让我再次发布 – Vinoth 2012-04-10 07:47:09
当你想在EditText中编辑你需要在ListView中触摸那个EditText,如果需要的话我们可以得到Edittext是从onTouch和通过使用TextWatcher我们可以得到改变那EditText.now让我知道你在哪里得到问题。 – Herry 2012-04-10 08:21:46
为什么你给saveData变量..请告诉我 – Vinoth 2012-04-10 09:24:12