我想知道如何更改listView上所选项目的背景颜色.我只想更改用户点击的特定项目,这意味着如果用户点击另一个项目,它将是突出显示的项目.好吧,因为我希望它尽可能保持简单并使用默认的android listview我使用此代码:
record_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
try{
for (int ctr=0;ctr<=record_items.length;ctr++){
if(i==ctr){
record_list.getChildAt(ctr).setBackgroundColor(Color.CYAN);
}else{
record_list.getChildAt(ctr).setBackgroundColor(Color.WHITE);
}
}
}
catch (Exception e){
e.printStackTrace();
}
Log.v("Selected item",record_list.getItemAtPosition(i));
}
});
Run Code Online (Sandbox Code Playgroud)
好的,这个工作正常,但问题是它很慢.现在我想知道是否有任何其他方法可以做到,它将提供与我相同的输出.
我尝试使用record_list.getSelectedView().setBackgroundColor(Color.CYAN);但它给了我一个空指针异常.
我也尝试了selector.xml,但它也没有做到这一点.此外,ListView上有一个名为listSelector的属性.如文档"Drawable用于指示列表中当前选定的项目"所述,它是可绘制的.我也相信这应该可以做到这一点,是的,它可以在我的模拟器上完成,但不是在我的Galaxy选项卡上.我也尝试了其他方法,但没有任何方法可行,因为我想要它.
当我尝试使用ListView 的performItemClick函数时,我遇到了一些困难.
我想要做的就是在列表的第一项中以编程方式执行单击.
我怎样才能做到这一点?我在文档中查找了该函数,但我并没有真正理解它的参数.
我尝试过类似的东西:
myListView.performItemClick(myListView.getChildAt(0), 0, myListView.getChildAt(0).getId());
Run Code Online (Sandbox Code Playgroud)
但它没有用 (myListView.getChildAt(0) returns null)
先感谢您!
我有一个listview,其中包含textviews作为其元素.
我已经对这个问题感到沮丧了很长一段时间,但我似乎无法使导航抽屉中的某个项目既不以编程方式显示也不会在用户选择时显示.
我正在尝试实现以下 http://i.stack.imgur.com/PIHEm.png(我无法发布图片)
我已经按照http://developer.android.com/training/implementing-navigation/nav-drawer.html上的示例导航抽屉进行操作
,每当我切换片段时,我都会调用setItemChecked()导航抽屉的ListView
mDrawerListView.setItemChecked(position, true);,但它似乎没有在列表视图中的位置选择项目.
我的布局文件也几乎与Google的示例完全一样
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="160dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#e5e5e5" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,并提前感谢.
编辑:这是我的导航抽屉的初始化代码.如您所见,我没有使用自定义ListView或适配器.
private void setUpDrawer() {
mDrawerListViewItems = getResources().getStringArray(R.array.drawer_list_item_names);
mDrawerListView = (ListView) findViewById(R.id.left_drawer);
mDrawerListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mDrawerListViewItems));
mDrawerListView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectCounterFragment(position);
}
});
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(
this, …Run Code Online (Sandbox Code Playgroud)