【问题标题】:Adding Items to ListView from Edittext从 Edittext 将项目添加到 ListView
【发布时间】:2014-12-02 10:02:43
【问题描述】:

我有一个活动,我有一个简单的 Edittext 和一个按钮,如图所示:

不,我有一个 MainActivity,其中包含许多片段,如下所示:

这是我将edittext文本传递给主要活动的代码:

  addlist = (ImageButton) findViewById(R.id.btnaddlist);
  findViewById(R.id.btnaddlist).setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    EditText edit = (EditText) findViewById(R.id.txtlist);
                    Intent i = new Intent(CreateList.this,
                            MainActivity.class);
                    Bundle bundle = new Bundle();
                    String ItemName = edit.getText().toString();
                    // Add your data from getFactualResults method to bundle
                    bundle.putString("ListItemName", ItemName);
                    // Add the bundle to the intent
                    i.putExtras(bundle);
                    startActivity(i);
                }
            });

}

这是我的主页片段:

ListView lv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    lv = (ListView) getView().findViewById(R.id.itemslistView);
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    Bundle itemintent = getActivity().getIntent().getExtras();
    String ItemName = itemintent.getString("ListItemName");

    if (itemintent.getString("ListItemName").equals("ItemName")) {
        /** Items entered by the user is stored in this ArrayList variable */
        ArrayList<String> list = new ArrayList<String>();
        list.add(ItemName);
        /** Declaring an ArrayAdapter to set items to ListView */
        ArrayAdapter<String> Listadapter;
        Listadapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),android.R.layout.simple_list_item_1, list);

        Listadapter.notifyDataSetChanged();

    }
    return rootView;
}

我在 logcat 中没有收到任何错误。但它无法在 MainActivity 上的 listView 中添加任何文本。

【问题讨论】:

  • 您是否将适配器设置为您的列表视图? lv.setAdapter(Listadapter);
  • @Rami-是的,我已将其设置为我的 ListView。
  • 在哪里?我在你的代码中没有看到它。
  • @Rami-如果可以,你能告诉我如何设置吗?
  • 您已经从活动中获取数据,因此无需使用此if (itemintent.getString("ListItemName").equals("ItemName")) {。删除这个。

标签: android listview android-edittext android-fragmentactivity


【解决方案1】:

您制作了适配器,但没有调用 ListView#setAdapter()

【讨论】:

    【解决方案2】:

    像这样更改您的 Home 片段:

    ListView lv;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            lv = (ListView) getView().findViewById(R.id.itemslistView);
            View rootView = inflater.inflate(R.layout.fragment_home, container, false);
            Bundle itemintent = getActivity().getIntent().getExtras();
            String ItemName = itemintent.getString("ListItemName");
    
            if (ItemName.equals("ItemName")) {
                /** Items entered by the user is stored in this ArrayList variable */
                ArrayList<String> list = new ArrayList<String>();
                list.add(ItemName);
                /** Declaring an ArrayAdapter to set items to ListView */
                ArrayAdapter<String> Listadapter;
                Listadapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),android.R.layout.simple_list_item_1, list);
    
                lv.setAdapter(Listadapter);
                Listadapter.notifyDataSetChanged();// i don't think this line is necessary
    
            }
            return rootView;
        }
    

    【讨论】:

      【解决方案3】:

      更好的方法如下:

      1. 开始主要活动
      2. 给一个按钮来添加项目
      3. 点击此按钮,调用具有edittext和按钮的活动(使用startActivityForResult
      4. 然后单击此按钮,setResult 使用 Intent Extras 并完成此活动。
      5. 它将用于 MainActivity。在这里编写你的 onActivityResult 方法并根据结果代码进行处理。从此处获取您的数据。

      希望这个答案对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-13
        • 2019-09-24
        • 1970-01-01
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 2016-03-05
        • 1970-01-01
        相关资源
        最近更新 更多