相关疑难解决方法(0)

更改ListView上所选项目的背景颜色

我想知道如何更改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选项卡上.我也尝试了其他方法,但没有任何方法可行,因为我想要它.

android android-layout

52
推荐指数
8
解决办法
22万
查看次数

ListSelector适用于整个列表

我有一个简单的列表,其中包含listselector.

<ListView android:id="@+id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:layout_below="@+id/round"
    android:listSelector="#99000000" android:clickable="true" android:cacheColorHint="#00000000" android:background="#00000000">
</ListView>
Run Code Online (Sandbox Code Playgroud)

如您所见,android:listSelector ="#99000000",但"黑色alpha"颜色应用于整个列表,而不是所选项目.


所以这就是我现在所拥有的,但整个列表仍然变黑

:: listview_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="false" android:state_focused="true"
        android:drawable="@drawable/list_normal" />
  <item android:state_pressed="true"
        android:drawable="@drawable/list_pressed" />
  <item android:state_focused="true"
        android:drawable="@drawable/list_active" />
</selector>
Run Code Online (Sandbox Code Playgroud)

:: colors.xml

<resources>
    <drawable name="list_normal">#96FFFFFF</drawable>
    <drawable name="list_active">#66000000</drawable>
    <drawable name="list_pressed">#CA000000</drawable>
</resources>
Run Code Online (Sandbox Code Playgroud)

::我列表中的xml标记

android:listSelector="@drawable/listview_background"
Run Code Online (Sandbox Code Playgroud)

android

47
推荐指数
3
解决办法
5万
查看次数

Android列表视图项目背景更改

我有一个Android列表视图.我想在单击一个listview项目时更改listview项目背景.

然后,之前选择的项目必须返回默认背景.这意味着只需要选择一个项目.

我已经搜索了很长时间了.我可以使用onItemClick()更改所选项目的背景

但我不能改变以前选择的项目.例如,如果我选择第二个项目,它就会被更改.然后我选择第三项.哦,我的上帝!它也改变了!我能为此做些什么 我怎么能得到以前的位置?

这是我的android代码.

private class ListViewItemClickListener implements
            AdapterView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {

            TextView title = (TextView) view.findViewById(R.id.title);
            title.setBackgroundResource(R.drawable.list_shape);

        }
    }
Run Code Online (Sandbox Code Playgroud)

android listview position onclick android-listview

6
推荐指数
1
解决办法
2万
查看次数

Android - 在ListView中OnItemClick中的setSelected

我正在尝试在ListView中设置OnItemClick事件中选择的项目,它只是不会选择项目.我究竟做错了什么?

lView.setOnItemClickListener(new OnItemClickListener()
   {
    @Override
    public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View clickedview, int position, long id)
    {
     clickedview.setSelected(true); 
        mItemsAdapter.select(position);
    }
   }); 
Run Code Online (Sandbox Code Playgroud)

几件事情:
1.我试图在列表视图上实现Multiple Select.
2.我无法从ListActivity扩展,因为Activity已经从BaseActivity自定义类扩展.
3. mItemsAdapter是一个扩展BaseAdapter的自定义ItemsAdapter适配器.
4.我不需要一个复选框,只是为了能够看到选中的行很好.
5. ItemsAdapter重写getView()并通过膨胀xml来设置行的布局

android listview multiple-select

3
推荐指数
1
解决办法
2万
查看次数

自定义适配器,所选项目背景

我有自定义适配器视图的问题.我尝试,改变背景viewClick事件.我有AdapterView.OnItemClickListener,我在哪里获得选择项目,并打电话myListView.invalidate();

无效后,呼叫adapters getView(...).这里是代码:

@Override public View getView(int position,View convertView,ViewGroup parent){

    View row = convertView;
    ProjectAdapterData projectItem;


    if (row == null) {

        LayoutInflater inflater = LayoutInflater.from(context);
        row = inflater.inflate(R.layout.project_small_item_layout, null);

        ProjectAdapterData projectAdapterData = new ProjectAdapterData();

        row.setTag(projectAdapterData);
        name = (TextView)row.findViewById(R.id.txtObjectName);
        if (objectData[position].Name!= null)
            name.setText(objectData[position].Name);
        adress = (TextView)row.findViewById(R.id.txtObjectAdress);
        if (objectData[position].Adress != null)
            adress.setText(objectData[position].Adress);
    }
    else {
        background = (RelativeLayout)row.findViewById(R.id.rlProjectBackground);
        if (objectData[position].isSelected)
            background.setBackgroundColor(context.getResources().getColor(R.color.cProjectSelected));
        else
            background.setBackgroundResource(R.color.cProjectUnSelected); //it's calls, but no result
        row.invalidate();
    }
    return row;
} …
Run Code Online (Sandbox Code Playgroud)

java android android-custom-view

1
推荐指数
1
解决办法
5038
查看次数