返回EDITTEXT值成的ListView [英] Return editText value into listView

查看:150
本文介绍了返回EDITTEXT值成的ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

活动A ,它具有多行的ListView 。从活动B的价值回归应填充活性的的ListView

活动A

  MyCustomBaseAdapter objMyCustomBaseAdapter;
 ArrayList的<&SearchResult所GT;结果=新的ArrayList<&SearchResult所GT;();  公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.work_details);        列表视图=(ListView控件)findViewById(R.id.listView);
        。名称= getIntent()getExtras()的getString(姓名); //收到信息名
        天气= getIntent()getExtras()的getString(天气)。 //接收天气
        。日期= getIntent()getExtras()的getString(日期2); //接收日期
        。状态= getIntent()getExtras()的getString(状态); //接收状态
        objMyCustomBaseAdapter =新MyCustomBaseAdapter(getApplicationContext(),结果);    } @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
            案例R.id.addDetails:
                查看menuItemView = findViewById(R.id.addDetails);
                PopupMenu的PO =新PopupMenu的(这一点,menuItemView); //为下拉菜单
                。po.getMenuInflater()膨胀(R.menu.popup_details,po.getMenu());
                po.setOnMenuItemClickListener(新PopupMenu.OnMenuItemClickListener(){
                公共布尔onMenuItemClick(菜单项项){
                如果(添加工作详细信息.equals(item.getTitle())){
                意向意图=新意图(getApplication(),B.class); //去B级
                startActivityForResult(意向,PROJECT_REQUEST_ code);
                 }
                        返回true;
                    }
                });
                po.show(); //显示弹出菜单
        }
        返回super.onOptionsItemSelected(项目);    } @覆盖
    公共无效的onActivityResult(INT申请code,INT结果code,意图数据){//从活动B接收
        如果(要求code == PROJECT_REQUEST_ code){
            ReceiveProject = data.getStringExtra(项目);
            ReceiveDescription = data.getStringExtra(描述);
            ReceiveProgress = data.getIntExtra(进步,0);
            ReceiveTimeIn = data.getStringExtra(TimeIn);
            ReceiveTimeOut = data.getStringExtra(超时);
            MyCustomBaseAdapter objMyCustomBaseAdapter =(MyCustomBaseAdapter)listview.getAdapter();
            objMyCustomBaseAdapter.addNewItem(ReceiveProject,ReceiveDescription,ReceiveProgress,ReceiveTimeIn,ReceiveTimeOut);        }
    }

活动B

  save.setOnClickListener(新View.OnClickListener()
        {//返回值活动A
            @覆盖
            公共无效的onClick(视图v)
            {
                意图returnIntent =新的Intent();
                项目= project.getSelectedItem()的toString()。
                描述= description.getText()的toString();
                进度= seekBar.getProgress();
                returnIntent.putExtra(项目,项目);
                returnIntent.putExtra(说明,说明);
                returnIntent.putExtra(进步,进度);
                Toast.makeText(getApplicationContext(),进步+,Toast.LENGTH_LONG).show();
                returnIntent.putExtra(TimeIn,TimeIn);
                returnIntent.putExtra(超时,超时);
                的setResult(Activity.RESULT_OK,returnIntent);
                完();            }
        });

MyCustomBaseAdapter.java

 公共类MyCustomBaseAdapter扩展BaseAdapter {//在活动列表视图     私有静态的ArrayList<&SearchResult所GT; sea​​rchArrayList;
     私人LayoutInflater mInflater;公共MyCustomBaseAdapter(上下文的背景下,ArrayList的<&SearchResult所GT;业绩){
                sea​​rchArrayList =结果;
                mInflater = LayoutInflater.from(上下文);
            }            公众诠释的getCount(){
                返回searchArrayList.size();
            }           公共无效addNewItem(字符串P,字符串D,诠释每,我的字符串,字符串O)
           {
               SearchResult所OBJ =新的SearchResult();
               obj.setProject(P);
               obj.setDescription(D),
               obj.setProgress(份);
               obj.setTimeIn(Ⅰ);
               obj.setTimeOut(O);
               sea​​rchArrayList.add(OBJ);
               这个。 notifyDataSetChanged();
           }

custom_row_view.xml

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT>
    < TextView的机器人:ID =@ + ID / ListProject
        机器人:TEXTSIZE =15sp
        机器人:文字样式=大胆
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT/>
    < TextView的机器人:ID =@ + ID / ListDescription
        机器人:layout_width =WRAP_CONTENT
        机器人:TEXTSIZE =15sp
        机器人:layout_height =WRAP_CONTENT/>
    < TextView的机器人:ID =@ + ID / ListProgress
        机器人:layout_width =WRAP_CONTENT
        机器人:TEXTSIZE =15sp
        机器人:layout_height =WRAP_CONTENT/>
    <的TextView
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:TEXTSIZE =15sp
        机器人:ID =@ + ID / ListTimeIn/>
    <的TextView
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:TEXTSIZE =15sp
        机器人:ID =@ + ID / ListTimeOut/>< / LinearLayout中>

当我点击活动B保存按钮来价值回归A,应用程序崩溃。

 流程:com.example.project.myapplication,PID:23777
    了java.lang.RuntimeException:不提供结果ResultInfo {谁= NULL,请求= 1,结果= -1,数据= {意向(有临时演员)}}到活动{com.example.project.myapplication / com.example.project .myapplication.GUI.A}:显示java.lang.NullPointerException:尝试调用虚拟方法无效com.example.project.myapplication.Adapter.MyCustomBaseAdapter.addNewItem(java.lang.String中,java.lang.String中,INT,JAVA .lang.String,java.lang.String中)一空对象引用
            在android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
            在android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
            在android.app.ActivityThread.-wrap16(ActivityThread.java)
            在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1393)
            在android.os.Handler.dispatchMessage(Handler.java:102)
            在android.os.Looper.loop(Looper.java:148)
            在android.app.ActivityThread.main(ActivityThread.java:5417)
            在java.lang.reflect.Method.invoke(本机方法)
            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)
            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     显示java.lang.NullPointerException:引起试图调用虚拟方法无效com.example.project.myapplication.Adapter.MyCustomBaseAdapter.addNewItem(java.lang.String中,java.lang.String中,INT,java.lang.String中,在一个空对象引用java.lang.String中)
            在com.example.project.myapplication.GUI.A.onActivityResult(A.java:95)

错误的code参考

  objMyCustomBaseAdapter.addNewItem(ReceiveProject,ReceiveDescription,ReceiveProgress,ReceiveTimeIn,ReceiveTimeOut);


解决方案

尝试启动活动B之前,适配器设置到ListView ,,
ListView控件没有适配器,这样它会getAdapter返回null

修改

添加设置适配器此code后,当你调用listview.getAdapter(使用适配器),,
没有这个适配器将是空

  =列表视图(ListView控件)findViewById(R.id.listView);
        。名称= getIntent()getExtras()的getString(姓名); //收到信息名
        天气= getIntent()getExtras()的getString(天气)。 //接收天气
        。日期= getIntent()getExtras()的getString(日期2); //接收日期
        。状态= getIntent()getExtras()的getString(状态); //接收状态
        objMyCustomBaseAdapter =新MyCustomBaseAdapter(getApplicationContext(),结果);
listview.setAdapter(objMyCustomBaseAdapter);

In Activity A, it has a multiline listView. The value return from Activity B should populate the Activity A listView.

Activity A

 MyCustomBaseAdapter objMyCustomBaseAdapter;
 ArrayList<SearchResults> results=new ArrayList<SearchResults>();

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.work_details);

        listview = (ListView) findViewById(R.id.listView);
        name = getIntent().getExtras().getString("Name"); // receive name from Information
        weather = getIntent().getExtras().getString("Weather"); //receive weather
        date = getIntent().getExtras().getString("date2"); //receive date
        status = getIntent().getExtras().getString("Status"); // receive status
        objMyCustomBaseAdapter=new MyCustomBaseAdapter(getApplicationContext(),results);

    }

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.addDetails:
                View menuItemView = findViewById(R.id.addDetails);
                PopupMenu po = new PopupMenu(this, menuItemView); //for drop-down menu
                po.getMenuInflater().inflate(R.menu.popup_details, po.getMenu());
                po.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                if ("Add Work Details".equals(item.getTitle())) {
                Intent intent = new Intent(getApplication(), B.class);  // go to B class  
                startActivityForResult(intent, PROJECT_REQUEST_CODE);
                 }
                        return true;
                    }
                });
                po.show(); //showing popup menu
        }
        return super.onOptionsItemSelected(item);

    }

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B
        if (requestCode == PROJECT_REQUEST_CODE) {
            ReceiveProject = data.getStringExtra("Project");
            ReceiveDescription = data.getStringExtra("Description");
            ReceiveProgress = data.getIntExtra("progress", 0);
            ReceiveTimeIn = data.getStringExtra("TimeIn");
            ReceiveTimeOut = data.getStringExtra("TimeOut");
            MyCustomBaseAdapter objMyCustomBaseAdapter= (MyCustomBaseAdapter)listview.getAdapter();
            objMyCustomBaseAdapter.addNewItem(ReceiveProject, ReceiveDescription, ReceiveProgress, ReceiveTimeIn, ReceiveTimeOut);

        }
    }

Activity B

  save.setOnClickListener(new View.OnClickListener()
        {  // return values to Activity A
            @Override
            public void onClick(View v)
            {
                Intent returnIntent=new Intent();
                Project=project.getSelectedItem().toString();
                Description=description.getText().toString();
                progress=seekBar.getProgress();
                returnIntent.putExtra("Project",Project);
                returnIntent.putExtra("Description", Description);
                returnIntent.putExtra("progress", progress);
                Toast.makeText(getApplicationContext(), progress+"", Toast.LENGTH_LONG).show();
                returnIntent.putExtra("TimeIn", TimeIn);
                returnIntent.putExtra("TimeOut",TimeOut);
                setResult(Activity.RESULT_OK,returnIntent);
                finish();

            }
        });

MyCustomBaseAdapter.java

    public class MyCustomBaseAdapter extends BaseAdapter{   // for ListView in Activity A

     private static ArrayList<SearchResults> searchArrayList;
     private LayoutInflater mInflater;

public MyCustomBaseAdapter(Context context, ArrayList<SearchResults> results) {
                searchArrayList = results;
                mInflater = LayoutInflater.from(context);
            }

            public int getCount() {
                return searchArrayList.size();
            }

           public void addNewItem(String P,String D,int Per,String I,String O)
           {
               SearchResults obj=new SearchResults();
               obj.setProject(P);
               obj.setDescription(D);
               obj.setProgress(Per);
               obj.setTimeIn(I);
               obj.setTimeOut(O);
               searchArrayList.add(obj);
               this. notifyDataSetChanged();
           }

custom_row_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/ListProject"
        android:textSize="15sp"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/ListDescription"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/ListProgress"
        android:layout_width="wrap_content"
        android:textSize="15sp"
        android:layout_height="wrap_content"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:id="@+id/ListTimeIn"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:id="@+id/ListTimeOut"/>

</LinearLayout>

When I click the save button in Activity B to return value to A, app crashed .

  Process: com.example.project.myapplication, PID: 23777
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.example.project.myapplication/com.example.project.myapplication.GUI.A}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.project.myapplication.Adapter.MyCustomBaseAdapter.addNewItem(java.lang.String, java.lang.String, int, java.lang.String, java.lang.String)' on a null object reference
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3699)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3742)
            at android.app.ActivityThread.-wrap16(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1393)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.project.myapplication.Adapter.MyCustomBaseAdapter.addNewItem(java.lang.String, java.lang.String, int, java.lang.String, java.lang.String)' on a null object reference
            at com.example.project.myapplication.GUI.A.onActivityResult(A.java:95)

Error where the code refer to

 objMyCustomBaseAdapter.addNewItem(ReceiveProject, ReceiveDescription, ReceiveProgress, ReceiveTimeIn, ReceiveTimeOut);

解决方案

try to set adapter to the listview before you start activity B,, the listView have no adapter so it will return null in getAdapter

edit

Add set adapter after this code to use the adapter when you call listview.getAdapter() ,, without this the adapter will be null

listview = (ListView) findViewById(R.id.listView);
        name = getIntent().getExtras().getString("Name"); // receive name from Information
        weather = getIntent().getExtras().getString("Weather"); //receive weather
        date = getIntent().getExtras().getString("date2"); //receive date
        status = getIntent().getExtras().getString("Status"); // receive status
        objMyCustomBaseAdapter=new MyCustomBaseAdapter(getApplicationContext(),results);
listview.setAdapter(objMyCustomBaseAdapter);

这篇关于返回EDITTEXT值成的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆