【发布时间】:2012-04-24 11:19:31
【问题描述】:
编辑 我必须告诉你,我的 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());
}
}
}
单击该项目并填充我的详细信息视图...
我尝试将我的 Fragment 更改为 ListFragment 但没有任何改变...
编辑结束
对于我的应用程序,我创建了一个 UI(用于平板电脑),左侧屏幕为 ListView,右侧为详细视图。 我想在加载数据后自动选择第一项,并查看详细信息。
我可以通过调用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) 为空,只有当我保留 perforItemClick 时。如果我只是评论这一行,然后单击一行,则该行会像在 Gmail 应用程序中一样突出显示。
你能帮我告诉我我做错了什么吗?
提前致谢
【问题讨论】:
-
当我登录 arg2 时,一切都很好,我得到了 '0'。但是如果我记录 arg1(传递给方法的视图),我得到了 null。我想在 perforItemClick 完成的那一刻,所有视图都还没有实例化,这就是为什么我的视图是空的,但是最好的方法是什么?
标签: android listview gmail tablet