如何在没有子项的情况下动态地将项添加到列表视图?

时间:2014-01-12 12:55:05

标签: android listview android-listview

我正在尝试通过文本框将项目添加到列表视图而没有列表中的子项目。到目前为止我发现的与此相关的是Dynamically add elements to a listView Android但是我正在使用fragements所以我得到了实施此解决方案时出现以下错误:http://pastebin.com/1QrUTx15

这就是我试图实现它的方法,但我认为它不起作用,因为我正在使用两种onCreate方法。有人可以指出某人指出我正确的方向,或者是否有更好的方法来添加来自列表视图的文本框?我也想知道如何从列表视图中排除子项目,以便只将项目传递给它。

public class TopRatedFragment extends Fragment {

    //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
    ArrayList<String> listItems=new ArrayList<String>();

    //DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW
    ArrayAdapter<String> adapter;

  //RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
    int clickCounter=0;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
        return rootView;
    }

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.fragment_top_rated);
        adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems);
        setListAdapter(adapter);
    }

    //METHOD WHICH WILL HANDLE DYNAMIC INSERTION
    public void addItems(View v) {
        listItems.add("Clicked : "+clickCounter++);
        adapter.notifyDataSetChanged();
    }

}

这就是目前界面的样子..

enter image description here

1 个答案:

答案 0 :(得分:0)

在添加新项目后,将新适配器分配给ListView:

public void addItems(View v) {
    listItems.add("Clicked : "+clickCounter++);
    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItems);
    setListAdapter(adapter);
}

或使用自定义ListView适配器。只有这样,您才能使用notifyDataSetChanged。 我在回答类似问题时解释了相关细节:Android - Dynamically Updating a custom ListView after items in an ArrayList are added