Android 如何从gridview中的edittext获取值
我在我的项目中使用了网格视图 我的活动布局文件Android 如何从gridview中的edittext获取值,android,gridview,android-edittext,Android,Gridview,Android Edittext,我在我的项目中使用了网格视图 我的活动布局文件 <GridView android:id="@+id/gridView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="start" android:numColumns="1" android:stretchMode="spacingWidth" and
<GridView
android:id="@+id/gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:numColumns="1"
android:stretchMode="spacingWidth"
android:layout_below="@+id/spinner1"
android:layout_marginLeft="20dip"
android:layout_marginRight="10dip"
android:layout_marginTop="20dip"
android:visibility="visible" >
</GridView>
现在我的问题是
单击“修改”按钮时,我想用新值更新数据库
我尝试使用.gettext()从编辑文本中获取值。
但它只从first edittext返回值
我是如何从其他EditText获得值的,以及行id
所以我用相同设计的新价格更新数据库。为什么要使用GridView来完成如此简单的工作? 如果使用ListView,则效果更好,而且填充列表和从其他EditText获取值会更容易 我可以给你一个想法。。。请看下面的代码我在这里做什么:
public class RecordExpenseAdapter extends ArrayAdapter<HashMap<String, String>>
{
Intent intent;
Context context;
int layoutResourceId;
ArrayList<HashMap<String, String>> RecordList = new ArrayList<HashMap<String, String>>();
public RecordExpenseAdapter(Context context, int layoutResourceId,ArrayList<HashMap<String, String>> RecordList)
{
super(context, layoutResourceId, RecordList);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.RecordList = RecordList;
this.intent = new Intent(context, ScanReceipt.class);
//Log.d("ASD:","comp intialize");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
try{
if(row == null)
{
Log.d("ASD:","insdie getview");
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.categoryName = (TextView)row.findViewById(R.id.textView1);
holder.date = (TextView)row.findViewById(R.id.textView2);
holder.amount = (TextView)row.findViewById(R.id.textView3);
holder.record_rid = (TextView)row.findViewById(R.id.ridRecord);
holder.cid=(TextView)row.findViewById(R.id.cid);
holder.vendor=(TextView)row.findViewById(R.id.vendor);
holder.description=(TextView)row.findViewById(R.id.desc);
holder.attachURL=(TextView)row.findViewById(R.id.userFile);
holder.attachImage=(ImageView)row.findViewById(R.id.attachment);
holder.scanReceipt = (ImageView)row.findViewById(R.id.imageView2);
row.setTag(holder);
holder.scanReceipt.setTag(position);
holder.scanReceipt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try{
Log.e("Scan Receipt Button List", "1");
ImageView iv = (ImageView) v;
Log.e("Scan Receipt Button List", "2");
int pos = (Integer) iv.getTag();
Log.e("Scan Receipt Button List", "3");
ScanReceipt.rid = RecordList.get(pos).get("rid").toString();
Log.e("Scan Receipt Button List", "4");
//Toast.makeText(context, "Button Clicked", Toast.LENGTH_LONG).show();
RecordExpenseAdapter.this.doIt();
}catch(Exception e){
Log.e("Error on click on Scan Receipt Button List", e.getMessage().toString());
}
}
});
// if(picture.get("userfile")=="no")
// {
// holder.attachImage.setVisibility(View.INVISIBLE);
// }
// else
// {
// holder.attachImage.setVisibility(View.VISIBLE);
// }
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
HashMap<String, String> picture = RecordList.get(position);
holder.categoryName.setText(picture.get("category_name"));
holder.date.setText(picture.get("date"));
holder.amount.setText(picture.get("amount"));
holder.record_rid.setText(picture.get("rid"));
holder.cid.setText(picture.get("cid"));
holder.vendor.setText(picture.get("vendor"));
holder.description.setText(picture.get("description"));
holder.attachURL.setText(picture.get("image"));
Log.e("Record Expense Adapter 0 : IMAGE", picture.get("image").toString());
Log.e("RID : " + position, picture.get("rid").toString());
// Log.e("error value", picture.get("userfile"));
//Log.e("error value", "value is error");
// if(picture.get("userfile")=="no")
// {
// holder.attachImage.setVisibility(View.INVISIBLE);
// }
//
// else
// {
// holder.attachImage.setVisibility(View.VISIBLE);
// }
if(picture.get("image").toString().trim().equalsIgnoreCase("no")){
holder.scanReceipt.setVisibility(View.VISIBLE);
holder.attachImage.setVisibility(View.INVISIBLE);
}else{
holder.scanReceipt.setVisibility(View.GONE);
holder.attachImage.setVisibility(View.VISIBLE);
}
}
catch(Exception e){
}
return row;
}
public void doIt(){
Log.e("Adapter 0", "In do It");
context.startActivity(intent);
}
static class ImageHolder
{
TextView categoryName;
TextView date;
TextView amount;
TextView record_rid;
TextView vendor;
TextView cid;
TextView description;
TextView attachURL;
ImageView attachImage,scanReceipt;
}
}
公共类RecordExpenseAdapter扩展了ArrayAdapter
{
意图;
语境;
国际布局资源;
ArrayList RecordList=新建ArrayList();
public RecordExpenseAdapter(上下文上下文、int-layoutResourceId、ArrayList记录列表)
{
超级(上下文、布局资源ID、记录列表);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
this.RecordList=记录列表;
this.intent=新的intent(上下文,scanReceive.class);
//日志d(“ASD:,“公司初始化”);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ImageHolder=null;
试一试{
if(行==null)
{
Log.d(“ASD:,“insdie getview”);
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的图像支架();
holder.categoryName=(TextView)row.findViewById(R.id.textView1);
holder.date=(TextView)row.findViewById(R.id.textView2);
holder.amount=(TextView)row.findViewById(R.id.textView3);
holder.record_rid=(TextView)row.findViewById(R.id.ridRecord);
holder.cid=(TextView)row.findViewById(R.id.cid);
holder.vendor=(TextView)row.findViewById(R.id.vendor);
holder.description=(TextView)row.findViewById(R.id.desc);
holder.attachURL=(TextView)row.findviewbyd(R.id.userFile);
holder.attachImage=(ImageView)row.findViewById(R.id.attachment);
holder.scanReceive=(ImageView)row.findViewById(R.id.imageView2);
row.setTag(支架);
支架.扫描收据.设置标签(位置);
holder.ScanReceivement.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
试一试{
Log.e(“扫描接收按钮列表”、“1”);
ImageView iv=(ImageView)v;
Log.e(“扫描接收按钮列表”、“2”);
int pos=(整数)iv.getTag();
Log.e(“扫描接收按钮列表”、“3”);
scanReceivement.rid=RecordList.get(pos.get(“rid”).toString();
Log.e(“扫描接收按钮列表”、“4”);
//Toast.makeText(上下文,“单击按钮”,Toast.LENGTH_LONG.show();
RecordExpenseAdapter.this.doIt();
}捕获(例外e){
Log.e(“单击扫描接收按钮列表时出错”,e.getMessage().toString());
}
}
});
//if(picture.get(“userfile”)=“否”)
// {
//holder.attachImage.setVisibility(视图不可见);
// }
//否则
// {
//支架.附件.设置可见性(视图.可见);
// }
row.setTag(支架);
}
其他的
{
holder=(ImageHolder)行。getTag();
}
HashMap picture=RecordList.get(位置);
holder.categoryName.setText(picture.get(“category_name”);
holder.date.setText(picture.get(“日期”));
holder.amount.setText(picture.get(“amount”));
holder.record_-rid.setText(picture.get(“rid”));
holder.cid.setText(picture.get(“cid”));
holder.vendor.setText(picture.get(“vendor”);
holder.description.setText(picture.get(“description”);
holder.attachURL.setText(picture.get(“image”));
Log.e(“记录费用适配器0:IMAGE”,picture.get(“IMAGE”).toString());
Log.e(“RID:+位置,picture.get(“RID”).toString());
//Log.e(“错误值”,picture.get(“用户文件”);
//Log.e(“错误值”,“值为错误”);
//if(picture.get(“userfile”)=“否”)
// {
//holder.attachImage.setVisibility(视图不可见);
// }
//
//否则
// {
//支架.附件.设置可见性(视图.可见);
// }
if(picture.get(“image”).toString().trim().equalsIgnoreCase(“no”)){
holder.scanReceivement.setVisibility(View.VISIBLE);
holder.attachImage.setVisibility(视图不可见);
}否则{
holder.scanReceive.setVisibility(View.GONE);
支架.附件.设置可见性(视图.可见);
}
}
捕获(例外e){
}
返回行;
}
公共无效doIt(){
Log.e(“适配器0”,“在DoIt中”);
背景。开始触觉(意图);
}
静态类图像保持器
{
TextView类别名称;
文本查看日期;
文本浏览量;
文本视图记录;
文本视图供应商;
文本视图cid;
文本视图描述;
文本视图附件;
ImageView附件图像,扫描收据;
}
}
在上面的代码中,我实现了ImageView扫描收据上的单击侦听器。每次都是相同的imageview,即每一行都有相同的布局,这意味着所有行都有相同的id,但仍然有
public void fillgrid(int categoryid,String car){
gridView = (GridView) findViewById(R.id.gridView);
final DatabaseClass2 db = new DatabaseClass2(this);
db.openDataBase();
Cursor c = db.getprice(categoryid);
startManagingCursor(c);
String[] fromColumns = {"_id",DatabaseClass2.colPrice};
int[] toViews = {R.id.cplabel, R.id.cpprice};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.grid_change_prices, c, fromColumns, toViews);
//c.moveToNext();
gridView.setAdapter(adapter); }
public class RecordExpenseAdapter extends ArrayAdapter<HashMap<String, String>>
{
Intent intent;
Context context;
int layoutResourceId;
ArrayList<HashMap<String, String>> RecordList = new ArrayList<HashMap<String, String>>();
public RecordExpenseAdapter(Context context, int layoutResourceId,ArrayList<HashMap<String, String>> RecordList)
{
super(context, layoutResourceId, RecordList);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.RecordList = RecordList;
this.intent = new Intent(context, ScanReceipt.class);
//Log.d("ASD:","comp intialize");
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
try{
if(row == null)
{
Log.d("ASD:","insdie getview");
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.categoryName = (TextView)row.findViewById(R.id.textView1);
holder.date = (TextView)row.findViewById(R.id.textView2);
holder.amount = (TextView)row.findViewById(R.id.textView3);
holder.record_rid = (TextView)row.findViewById(R.id.ridRecord);
holder.cid=(TextView)row.findViewById(R.id.cid);
holder.vendor=(TextView)row.findViewById(R.id.vendor);
holder.description=(TextView)row.findViewById(R.id.desc);
holder.attachURL=(TextView)row.findViewById(R.id.userFile);
holder.attachImage=(ImageView)row.findViewById(R.id.attachment);
holder.scanReceipt = (ImageView)row.findViewById(R.id.imageView2);
row.setTag(holder);
holder.scanReceipt.setTag(position);
holder.scanReceipt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try{
Log.e("Scan Receipt Button List", "1");
ImageView iv = (ImageView) v;
Log.e("Scan Receipt Button List", "2");
int pos = (Integer) iv.getTag();
Log.e("Scan Receipt Button List", "3");
ScanReceipt.rid = RecordList.get(pos).get("rid").toString();
Log.e("Scan Receipt Button List", "4");
//Toast.makeText(context, "Button Clicked", Toast.LENGTH_LONG).show();
RecordExpenseAdapter.this.doIt();
}catch(Exception e){
Log.e("Error on click on Scan Receipt Button List", e.getMessage().toString());
}
}
});
// if(picture.get("userfile")=="no")
// {
// holder.attachImage.setVisibility(View.INVISIBLE);
// }
// else
// {
// holder.attachImage.setVisibility(View.VISIBLE);
// }
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
HashMap<String, String> picture = RecordList.get(position);
holder.categoryName.setText(picture.get("category_name"));
holder.date.setText(picture.get("date"));
holder.amount.setText(picture.get("amount"));
holder.record_rid.setText(picture.get("rid"));
holder.cid.setText(picture.get("cid"));
holder.vendor.setText(picture.get("vendor"));
holder.description.setText(picture.get("description"));
holder.attachURL.setText(picture.get("image"));
Log.e("Record Expense Adapter 0 : IMAGE", picture.get("image").toString());
Log.e("RID : " + position, picture.get("rid").toString());
// Log.e("error value", picture.get("userfile"));
//Log.e("error value", "value is error");
// if(picture.get("userfile")=="no")
// {
// holder.attachImage.setVisibility(View.INVISIBLE);
// }
//
// else
// {
// holder.attachImage.setVisibility(View.VISIBLE);
// }
if(picture.get("image").toString().trim().equalsIgnoreCase("no")){
holder.scanReceipt.setVisibility(View.VISIBLE);
holder.attachImage.setVisibility(View.INVISIBLE);
}else{
holder.scanReceipt.setVisibility(View.GONE);
holder.attachImage.setVisibility(View.VISIBLE);
}
}
catch(Exception e){
}
return row;
}
public void doIt(){
Log.e("Adapter 0", "In do It");
context.startActivity(intent);
}
static class ImageHolder
{
TextView categoryName;
TextView date;
TextView amount;
TextView record_rid;
TextView vendor;
TextView cid;
TextView description;
TextView attachURL;
ImageView attachImage,scanReceipt;
}
}
List<CustomClass> list = new ArrayList<CustomClass>();
price_text.setTag(c.getPosition());
price_text.getTag()