【问题标题】:How can I add icon images in Listview via Adapter without XML如何在没有 XML 的情况下通过适配器在 Listview 中添加图标图像
【发布时间】:2020-03-19 12:09:43
【问题描述】:

我想将图标添加到 ListView 中的每个项目位置。我在 ListView 中添加了文本,但是当尝试通过 videoList.add(R.drawable.mi_icon, "Genel Bilgiler"); 添加图标时,我的应用程序崩溃了。有什么想法吗?

Genel.java:

MediaController mediaController;
VideoView videoview;
ListView listView;
ArrayList<String> videoList;
ArrayAdapter adapter;


@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("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();

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    您正在尝试将两个项目添加到字符串列表List&lt;String&gt;。这是一个架构问题。

    如果您需要字符串和资源 ID 之间的关联,您可以使用 Map。

    private final Map<String, Int> videoList = new HashMap<>();
    
    videoList.put("Genel Bilgiler", R.drawable.mi_icon);
    

    不过,创建一个 Video.class 的 POJO 似乎更合适:

    public class Video() {
    
    private final String title;
    private final int image;
    
    public Video(String title, int image) {
        this.title = title;
        this.image = image;
    }
    
    // getter methods
    
    }
    

    并将其传递给 ArrayAdapter

    private final List<Video> videoList = new ArrayList<>();
    videoList.add(new Video("Genel Bilgiler", R.drawable.mi_icon));
    
    ArrayAdapter<Video> adapter=new ArrayAdapter<Video>
    

    【讨论】:

    • tnx 对你的回答来说太多了,你能告诉我请 video.class 足够用于其他 java 文件吗,或者
    • 崩溃后日志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2019-11-24
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多