如何更改ListFragment / ArrayAdapter的列表项文本?

时间:2015-08-05 13:09:50

标签: android android-arrayadapter android-listfragment

我有一个扩展ListFragment的片段。

在其中我使用ArrayAdapter

public class MyFragment extends ListFragment {
    public void onStart() {
        super.onStart();
        List<String> list = new ArrayList<String>();
        list.add("Superman");
        list.add("Batman");
        arrayAdapter = new ArrayAdapter<OptionToStringAdapter>(
                getActivity(),
                android.R.layout.simple_list_item_1,
                list);
        getListView().setAdapter(arrayAdapter);
        getListView().setOnItemClickListener(new ModifyOption(this));
        setListShown(true);
    }

当用户点击我想要修改文本的项目时。

如何修改文字?

public class ModifyOption implements OnItemClickListener {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        ???What goes here????
    }
}

3 个答案:

答案 0 :(得分:1)

尝试使用以下代码:

public class ModifyOption implements OnItemClickListener { public void onItemClick(AdapterView parent, View view, int position, long id) {

arrayAdapter.remove(arrayAdapter.getItem(position));
arrayAdapter.insert("new text",position);

 } }

答案 1 :(得分:1)

假设您要更改所单击列表项的内容。

首先,使用您选择的对话框或小部件更改值。 其次,使用'position'参数更改列表中位置的项目值。

第三,调用适配器对象的notifyDataSetChanged()方法。

public class ModifyOption implements OnItemClickListener {
    public void onItemClick(AdapterView parent, View view, int position, long id) {


       // create a dialog or other widget
       String newValue = "your_new_value";
       list.set(position,newValue);  
       arrayAdapter.notifyDataSetChanged();  //informs views that data has been changed


    }
}

答案 2 :(得分:0)

这似乎可以解决问题。我不知道这是否合适。

public void onItemClick(AdapterView parent, View view, int position, long id) { TextView textview = (TextView) view.findViewById(android.R.id.text1); textview.setText("Spiderman"); }