将 EditText 值检查到 ListView android
check EditText value onto ListView android
我在主 activity 和 class 适配器中使用 ListView 扩展 ArrayAdapter,登录表单只有一行。
这样的代码适配器
public class AdapterLogin extends ArrayAdapter<ListArrayItem> {
Context mContext;
int layoutResourceId;
ListArrayItem data[] = null;
public AdapterLogin(Context mContext, int layoutResourceId, ListArrayItem[] data) {
super(mContext, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.data = data;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
}
//here i have for login like this
lin_form = new LinearLayout(mContext);
EditText email_input = new EditText(mContext);
Button btn_sign = new Button(mContext);
btn_sign.setOnClickListener(login_btn_clicked);
TextView login_status_message = new TextView(mContext);
lin_form.addView(email_input);
lin_form.addView(btn_sign);
lin_form.addView(login_status_message);
rowitem = (RelativeLayout)convertView.findViewById(R.id.rowitem);
rowitem.addView(lin_form);
return convertView;
}
public OnClickListener login_btn_clicked = new OnClickListener() {
String email_value = email_input.getText().toString();
// i want to see email_value but doesnt show me any thing
login_status_message.setText("email value:"+ email_value);
};
在主要 activity 我有这样的代码:
FillFooter fillfooter= new FillFooter();
fillfooter.setFooter(MainActivity.this,"mainactivity");
fillfooter.fillFooter();
public static void gotoLogin(Context context){
Activity activity = (Activity)context;
activity.setTitle("Broonza: Вход");
list = new HashMap<String, String>();
listarraymain[0] = new ListArrayItem(1, list);
AdapterLogin adapter = new AdapterLogin(context, R.layout.row_item, listarraymain);
listviewtmain.clearFocus();
listviewtmain.setAdapter(adapter);
}
在class填充页脚
public class FillFooter {
public void setFooter(Context context,String typeactivity){
this.context = context;
this.activity = (Activity) context;
linaccount = new LinearLayout(context);
linaccount.setOnClickListener(gotologin);
}
public OnClickListener gotologin= new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.gotoLogin(context);
}
};
}
row_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="1dp"
android:paddingBottom="0dp"
android:paddingTop="10dp"
android:id="@+id/rowitem" >
使用从适配器到列表视图的所有字段加载表单登录工作正常,但如果电子邮件字段内容文本不显示该文本,则单击按钮登录时。
问题不在打印错误!,问题在打印字段email值! OnCLickListener() 不起作用。只有当我像这样将 email_field 的文本添加到内部适配器上时,它才会起作用! email_input.setText("example@mail.ru")
我认为
if(error !=""){
login_status_message.setText(error);
}
应该是这样的:
if(!error.equals(""){
login_status_message.setText(error);
}
这基本上是一个字符串比较。如果你想将一个字符串与一个字符串进行比较,你应该使用 equals() 而不是 !=.
您的问题是错误值始终为 null 并且您看不到 email 的值,它没有调用 login_status_message.setText("email value:"+ email_value);
改变这个
btn_sign.setOnClickListener(login_btn_clicked);
TextView login_status_message = new TextView(mContext);
通过这个:
TextView login_status_message = new TextView(mContext);
btn_sign.setOnClickListener(login_btn_clicked);
您正在 getView 方法下初始化并且是该块的本地;
您如何在方法之外访问此字段?
您已经使用方法 as-
创建了本地对象
EditText email_input = new EditText(mContext);
TextView login_status_message = new TextView(mContext);
在 getView 方法中。
您需要将 Listener 放入 getView 方法中,如
btn_sign.setOnClickListener(new OnClickListener() {
String email_value = email_input.getText().toString();
// i want to see email_value but doesnt show me any thing
login_status_message.setText("email value:"+ email_value);
});
如果您有另一个重复字段,请重新检查代码。
谢谢大家)。重启eclipse后,一切正常。
我在主 activity 和 class 适配器中使用 ListView 扩展 ArrayAdapter,登录表单只有一行。
这样的代码适配器
public class AdapterLogin extends ArrayAdapter<ListArrayItem> {
Context mContext;
int layoutResourceId;
ListArrayItem data[] = null;
public AdapterLogin(Context mContext, int layoutResourceId, ListArrayItem[] data) {
super(mContext, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.data = data;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
}
//here i have for login like this
lin_form = new LinearLayout(mContext);
EditText email_input = new EditText(mContext);
Button btn_sign = new Button(mContext);
btn_sign.setOnClickListener(login_btn_clicked);
TextView login_status_message = new TextView(mContext);
lin_form.addView(email_input);
lin_form.addView(btn_sign);
lin_form.addView(login_status_message);
rowitem = (RelativeLayout)convertView.findViewById(R.id.rowitem);
rowitem.addView(lin_form);
return convertView;
}
public OnClickListener login_btn_clicked = new OnClickListener() {
String email_value = email_input.getText().toString();
// i want to see email_value but doesnt show me any thing
login_status_message.setText("email value:"+ email_value);
};
在主要 activity 我有这样的代码:
FillFooter fillfooter= new FillFooter();
fillfooter.setFooter(MainActivity.this,"mainactivity");
fillfooter.fillFooter();
public static void gotoLogin(Context context){
Activity activity = (Activity)context;
activity.setTitle("Broonza: Вход");
list = new HashMap<String, String>();
listarraymain[0] = new ListArrayItem(1, list);
AdapterLogin adapter = new AdapterLogin(context, R.layout.row_item, listarraymain);
listviewtmain.clearFocus();
listviewtmain.setAdapter(adapter);
}
在class填充页脚
public class FillFooter {
public void setFooter(Context context,String typeactivity){
this.context = context;
this.activity = (Activity) context;
linaccount = new LinearLayout(context);
linaccount.setOnClickListener(gotologin);
}
public OnClickListener gotologin= new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.gotoLogin(context);
}
};
} row_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="1dp"
android:paddingBottom="0dp"
android:paddingTop="10dp"
android:id="@+id/rowitem" >
使用从适配器到列表视图的所有字段加载表单登录工作正常,但如果电子邮件字段内容文本不显示该文本,则单击按钮登录时。 问题不在打印错误!,问题在打印字段email值! OnCLickListener() 不起作用。只有当我像这样将 email_field 的文本添加到内部适配器上时,它才会起作用! email_input.setText("example@mail.ru")
我认为
if(error !=""){
login_status_message.setText(error);
}
应该是这样的:
if(!error.equals(""){
login_status_message.setText(error);
}
这基本上是一个字符串比较。如果你想将一个字符串与一个字符串进行比较,你应该使用 equals() 而不是 !=.
您的问题是错误值始终为 null 并且您看不到 email 的值,它没有调用 login_status_message.setText("email value:"+ email_value);
改变这个
btn_sign.setOnClickListener(login_btn_clicked);
TextView login_status_message = new TextView(mContext);
通过这个:
TextView login_status_message = new TextView(mContext);
btn_sign.setOnClickListener(login_btn_clicked);
您正在 getView 方法下初始化并且是该块的本地; 您如何在方法之外访问此字段? 您已经使用方法 as-
创建了本地对象 EditText email_input = new EditText(mContext);
TextView login_status_message = new TextView(mContext);
在 getView 方法中。 您需要将 Listener 放入 getView 方法中,如
btn_sign.setOnClickListener(new OnClickListener() {
String email_value = email_input.getText().toString();
// i want to see email_value but doesnt show me any thing
login_status_message.setText("email value:"+ email_value);
});
如果您有另一个重复字段,请重新检查代码。
谢谢大家)。重启eclipse后,一切正常。