编辑
我必须告诉您,我的listview由asynctask填充。
当我使用onPostExecute方法时,下面的代码工作正常:

synchronized (mListView) {
            if(mFeeds==null || mFeeds.size()==0){
                Utils.Log("mFeeds empty");
                _this.setListShown(false);
            }else{
                Utils.Log("mFeeds Full");
                _this.setListShown(true);
                mListView.setAdapter(new ListFeedsAdapter(mActivity,mFeeds));
                mListView.notifyAll();

                NewsFeedsDetailViewPagerFragment fragment = (NewsFeedsDetailViewPagerFragment) getFragmentManager()
                        .findFragmentById(R.id.feeddetailViewPagerFragment);

                if(fragment!=null){
                    mListView.performItemClick(null, 0, mListView.getFirstVisiblePosition());

                }
            }

        }

单击项目并填充我的详细信息视图…
我试图将我的片段更改为列表片段,但没有任何更改…
编辑结束
对于我的应用程序,我创建了一个用户界面(用于平板电脑),左屏幕是listview,右屏幕是detail视图。
我想在加载数据后自动选择第一个项目,并查看详细信息。
我可以通过拨打mListView.performItemClick(null, 0, mListView.getFirstVisiblePosition());
mListView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
    // TODO Auto-generated method stub

    NewsFeedsDetailViewPagerFragment fragment = (NewsFeedsDetailViewPagerFragment)
            getFragmentManager().findFragmentById(R.id.feeddetailViewPagerFragment);
    if(fragment!=null){
        fragment.setFeedDetail(mFeeds, arg2);
    }
});

现在,我要做的是突出显示第一个项目,如用于平板电脑的gmail应用程序。
我在每一行上使用选择器背景,如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/selected_item_background" android:state_activated="true"/>
    <item android:drawable="@drawable/pressed_item_background" android:state_activated="false" android:state_pressed="true"/>
    <item android:drawable="@drawable/pressed_item_background" android:state_focused="true"/>
    <item android:drawable="@drawable/unselected_item_background"/>
</selector>

当我在onitemclick侦听器中使用mListView.getChildAt(arg2).setActivated(true);时,我有一个nullpointerexception,因为mListView.getChildAt(arg2)是空的,只有当我保持performitemclick时。如果我只是注释这一行,然后单击一行,那么这一行就像在gmail应用程序中一样突出显示。
你能帮我告诉我我做错了什么吗?
提前感谢

最佳答案

我找到了我的问题的解决方案,如果有一个开发人员处于相同的情况下,我会在这里发布解决方案。
我在适配器中创建了一个必须激活标志wich position的方法,在getview方法中,我只是将当前位置与标志进行比较,然后激活或不激活行:

((ListFeedsAdapter) mListView.getAdapter()).setItemSelected(mOldPosition);

在适配器中:
private int mItemSelected = -1 ;
public void setItemSelected(int position){
mItemSelected=position;
}

public View getView(int position, View convertView, ViewGroup parent){
       //some code ....
    if(mItemSelected==position){
        convertView.setActivated(true);
    }else{
        convertView.setActivated(false);
    }
}

谢谢您!

08-26 00:38