繁体   English   中英

为什么我的列表视图没有更新?

[英]Why is my listview not updating?

我消除了所有麻烦。 谁能告诉我为什么列表不使用新值更新? 我已经尝试了所有的刷新命令,也许我缺少一些东西?

public class DropboxFragment extends ListFragment {

String[] values;
ArrayAdapter<String> adapter;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" };

   adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, values);

    setListAdapter(adapter);

}


@Override
public void onListItemClick(ListView l, View v, int position, long id) {

    values =  new String[] { "IT", "WORKED"};
    l.invalidateViews();
    adapter.notifyDataSetChanged();
    l.refreshDrawableState();
}

}

代替notifyDataChanged尝试使用新值初始化ArrayAdapter

好吧...您没有将新的字符串传递给适配器,只是在创建一个新的数组。

请记住,Java传递的是引用值,而不是引用本身,因此适配器中的值与活动中的引用不同,尽管它指向的是同一对象。 当您在活动中更改指向新对象的引用时,实例化适配器不知道这一点。

尝试以下方法:

values =  new String[] { "IT", "WORKED"};
adapter = new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);

Chaning valuesonListItemClick不改变列表适配器。 您需要使用给定的视图找到所需的textview并相应地更改其文本。

public void onListItemClick(ListView l, View v, int position, long id) {
   TextView tv = (TextView)v; // assuming that the only view created with the ArrayAdapter is a text view 
   tv.setText("new text");
}

您必须添加:notifyDataSetChanged()

setListAdapter(adapter);
adapter.notifyDataSetChanged();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM