简体   繁体   English

如何在 ListView 中单击时更改 TextView 背景颜色?

[英]How can I changing TextView background color on click in the ListView?

I want to change the background of a textview when click every items.单击每个项目时,我想更改文本视图的背景。 I do not have TextView on the XML file.我在 XML 文件上没有 TextView。 I added text by array adapter.我通过数组适配器添加了文本。 I have search the internet for solutions and look at most of all the solution on stackoverflow, still no solution.我已经在互联网上搜索解决方案并查看了stackoverflow上的大部分解决方案,仍然没有解决方案。

 @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_genel);



    final VideoView videoview = findViewById(R.id.Videogenel);
    listView = (ListView) findViewById(R.id.lgvideo);
    videoList= new ArrayList<>();
    videoList.add("1: Genel Bilgiler");



    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,videoList);
    listView.setAdapter(adapter);




    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position){
                case 0:
                    videoview.setVideoPath("/storage/A6D3-E544/videos/genel1.mp4");
                    break;
            }
            final MediaController mediacontroller = new MediaController(Genel.this);
            mediacontroller.setAnchorView(videoview);

            videoview.setMediaController(mediacontroller);
            videoview.requestFocus();
            videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
                        @Override
                        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
                            videoview.setMediaController(mediacontroller);
                            mediacontroller.setAnchorView(videoview);
                        }
                    });
                }
            });

            videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                @Override
                public boolean onError(MediaPlayer mp, int what, int extra) {
                    Log.d("API123", "What " + what + " extra " + extra);
                    return false;
                }
            });

            videoview.setMediaController(mediaController);
            videoview.start();

        }
     });

   }

Try by adding an onItemClickListner on the listview and if it does not work then I don't think this is possible with the default ArrayAdapter class.尝试在列表视图上添加一个 onItemClickListner,如果它不起作用,那么我认为默认的 ArrayAdapter 类是不可能的。 so create your own adapter class and extend it with the BaseAdapter or ArrayAdapter you can search for examples.因此,创建您自己的适配器类并使用 BaseAdapter 或 ArrayAdapter 对其进行扩展,您可以搜索示例。 then you can change Item's background by adding an onItemClickListner on your ListView.然后您可以通过在您的 ListView 上添加一个 onItemClickListner 来更改项目的背景。

我认为你应该让自己的CustomAdapter ,然后你可以设置onClickListener为您的TextView这个适配器或内部onItemClickListner您的ListView, 喜欢这里

Try this: Create a selector color file res/color/selector_txt.xml:试试这个:创建一个选择器颜色文件 res/color/selector_txt.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:color="@color/color1"/>
    <item android:state_pressed="true" android:state_enabled="false" android:color="@color/color2" />
    <item android:state_enabled="false" android:color="@color/color3" />
    <item android:color="@color/color4"/>
 </selector>

Create new layout file: list_item.xml.创建新的布局文件:list_item.xml。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:background="@color/selector_txt"
android:textSize="15sp"
/>

Then replace the layout of array adapter.然后更换阵列适配器的布局。

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.list_item,videoList);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM