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

时间:2020-03-20 10:54:12

标签: android android-text-color

我想在单击每个项目时更改textview的背景。我在XML文件上没有TextView。我通过数组适配器添加了文本。 我已经在互联网上搜索了解决方案,并在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();

        }
     });

   }

3 个答案:

答案 0 :(得分:0)

尝试在列表视图上添加onItemClickListner,如果它不起作用,那么我认为默认ArrayAdapter类是不可能的。因此,创建您自己的适配器类并使用BaseAdapter或ArrayAdapter对其进行扩展,可以搜索示例。 那么您可以通过在ListView上添加onItemClickListner来更改Item的背景。

答案 1 :(得分:0)

我认为您应该自己制作CustomAdapter,然后可以在此适配器内为TextView设置onClickListener或为listView like here设置onItemClickListner

答案 2 :(得分:0)

尝试一下: 创建选择器颜色文件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>

创建新的布局文件: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"
/>

然后替换阵列适配器的布局。

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