Android ListView未发出通知

Android ListView未发出通知,android,listview,notify,Android,Listview,Notify,我正在使用一个列表片段在一个定制的导航抽屉中进行编辑。我想在按下时更改列表项中文本视图的颜色。我正在将项目单击位置传递给适配器并通知适配器。但它不起作用。但当我再次设置适配器时,它正在工作。但这场运动并不顺利。我应该如何克服这个问题 以下是片段的ListItem单击 @Override public void onListItemClick(ListView lView, View v, final int position, long id) { super.onListItemCli

我正在使用一个列表片段在一个定制的导航抽屉中进行编辑。我想在按下时更改列表项中文本视图的颜色。我正在将项目单击位置传递给适配器并通知适配器。但它不起作用。但当我再次设置适配器时,它正在工作。但这场运动并不顺利。我应该如何克服这个问题

以下是片段的ListItem单击

@Override
public void onListItemClick(ListView lView, View v, final int position, long id) {
    super.onListItemClick(lView, v, position, id);
    adapter.setSelectedIndex(position);
    adapter.notifyDataSetChanged();
    lView.setAdapter(adapter);
}
以及具有以下代码的适配器

public void setSelectedIndex(int ind)
{

    selectedIndex = ind;
    notifyDataSetChanged();
}
我的积极性创造了

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    menuitemlist=new ArrayList<MenuItem>();
    menuitemlist.clear();
    for(int i=0;i<menulist.length;i++){
        MenuItem item=new MenuItem();
        item.icon=iconlist[i];
        item.menuText=menulist[i];
        item.status=0;
        menuitemlist.add(item);
    }

    adapter=SlidingListAdapter.newInstance(myActivity, menuitemlist);       
    setListAdapter(adapter);

}
activitycreated上的公共void(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
menuitemlist=新建ArrayList();
menuitemlist.clear();
对于(int i=0;i方法1

Set your list adapter outside `onListItemClick()`

    lView.setAdapter(adapter);

    @Override
    public void onListItemClick(ListView lView, View v, final int position, long id) {
        super.onListItemClick(lView, v, position, id);
        adapter.setSelectedIndex(position);
        adapter.notifyDataSetChanged();
    }
方法2

View lastSelectedView = null;

@Override
public void onListItemClick(ListView lView, View v, final int position, long id) {
    super.onListItemClick(lView, v, position, id);
    if(lastSelectedView != null){
      TextView txtView = (TextView)lastSelectedView.findViewById(R.id.x);
      txtView.setTextColor(defaultColor);
    }
    TextView txtView = (TextView) v.findViewById(R.id.x);
    txtView.setTextColor(pressedColor);

    lastSelectedView = v;
}
方法3

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="#ff0000"/>
    <item android:state_selected="true" android:color="#00ff00"/>
    <item android:color="#000000"/>

</selector>


并将此选择器文件设置为TextView的textColor

为什么要在onListItemClick中设置适配器?因为适配器没有通知。我想更改列表项中存在的TextView的颜色。当我刚刚调用适配器通知时,未发生更改。在设置适配器TextView颜色时,请显示“如果”条件实际上我正在为创建的活动设置内部适配器。由于它没有通知适配器,我再次调用适配器。我尝试了方法2,第一次按时它工作正常。然后它不工作。我应该更改什么?