当前位置: 首页 > 面试题库 >

如何将方法设置为数组

欧阳博文
2023-03-14
问题内容

我正在尝试显示媒体存储的多个列,例如艺术家,专辑,标题等。我能够正确获取arraylist中的一个列,并且可以正常工作,但是当我添加另一个列时,所有列都在同一列中数组列表,所以我创建了一个类,并在该类方法中添加了列。但是我无法在custome适配器中声明它,这是我的代码。

活动主体

    private ArrayList < MediaFileInfo > audioList = new ArrayList < > ();

    private void External() {
        try {
            String[] proj = {
                MediaStore.Audio.Media._ID,
                    MediaStore.Audio.Media.TITLE,
                    MediaStore.Audio.Media.ARTIST,
                    MediaStore.Audio.Media.ALBUM
            }; // Can include more data for more details and check it.

            String selection = MediaStore.Audio.Media.DURATION + ">=90000";

            String[] selectionArgs = null;

            String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";

            Cursor audioCursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, selection, selectionArgs, sortOrder);

            if (audioCursor != null) {
                if (audioCursor.moveToFirst()) {
                    do {
                        int audioTitle = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
                        int audioartist = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
                        int audioalbum = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM);
                        MediaFileInfo info = new MediaFileInfo();
                        info.setTitle(audioCursor.getString(audioTitle));
                        info.setAlbum(audioCursor.getString(audioalbum));
                        info.setArtist(audioCursor.getString(audioartist));
                        audioList.add(info);
                    } while (audioCursor.moveToNext());
                }
            }
            audioCursor.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方法类别

 public class MediaFileInfo {
     private String title, artist, album;

     public String getTitle() {
         return title;
     }

     public void setTitle(String title) {
         this.title = title;
     }

     public String getArtist() {
         return artist;
     }

     public void setArtist(String artist) {
         this.artist = artist;
     }

     public String getAlbum() {
         return album;
     }

     public void setAlbum(String album) {
         this.album = album;
     }
 }

CustomeAdapter

public class CustomeAdapter extends ArrayAdapter {
    private ArrayList < MediaFileInfo > audioList = new ArrayList < > ();

    public CustomeAdapter(Context context, int resource) {
        super(context, resource);
    }

    public CustomeAdapter(MainActivity context, ArrayList < MediaFileInfo > audioList) {
        super(context, R.layout.custome_list, audioList);
    }

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

        LayoutInflater imthebest = LayoutInflater.from(getContext());@
        SuppressLint("ViewHolder") View custome = imthebest.inflate(R.layout.custome_list, parent, false);
        MediaFileInfo item = audioList.get(0);
        String item1 = (String) getItem(position);
        TextView text1 = (TextView) custome.findViewById(R.id.textView);
        text1.setText(item1);


        return custome;
    }
}

定制XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Song name"
    android:id="@+id/textView" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="Artist"
    android:id="@+id/textView2" />
</LinearLayout>

如何将方法设置为数组。如何获取任何示例的方法都将有所帮助


问题答案:

如何将标题和艺术家都放入列表:

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

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.custome_list, parent, false);
        }
        MediaFileInfo item = (MediaFileInfo) getItem(position);
        TextView text1 = (TextView) convertView.findViewById(R.id.textView);
        text1.setText(item.getTitle());
        TextView text2 = (TextView) convertView.findViewById(R.id.textView2);
        text2.setText(item.getArtist());


        return convertView;
    }

如果您要从数据库中获取数据并拥有一个,Cursor则应该只创建一个CursorAdapter子类。您无需执行根据数据创建自己的列表的工作。

您所需要做的就是覆盖bindView()bindView()会给您一个a
View来填充列表项,一个Cursor已经位于具有该项目数据的记录的位置。这是从光标获取列数据并在列表项视图中设置子视图的简单操作。



 类似资料:
  • 我有一个设置活动在Android Studio,用户将在文本框中输入一个名称。他们将点击保存并进入另一个活动,他们的名字将显示在文本视图中。我在尝试在文本视图中显示名称时遇到了麻烦,我尝试了一些不同的方法,并得到了一些不同的错误,这可能是一些简单的东西,我没有得到或忽略。这是我的错误代码 我的错误是:

  • 问题内容: 我希望我的div调整其高度以使其始终等于其宽度。宽度为百分比。当父母的宽度减小时,盒子应通过保持其纵横比减小。 CSS是怎么做到的? 问题答案: 要实现所需的功能,可以使用viewport-percentagelength 。 这是我在jsfiddle上制作的一个简单示例。 HTML: CSS: 我敢肯定还有很多其他方法可以做到这一点,但是这种方法对我来说似乎是最好的。

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我使用的是Spring Kafka 2.2.7,我已经将配置为,并使用消费消息,一切都按预期运行。 我想添加一个来记录所有消耗的消息,但发现很难配置它。留档指出可以在容器上设置RecordInterceptor,但我不确定如何获取容器的实例。 从版本2.2.7开始,您可以向侦听器容器添加RecordInterceptor;它将在调用允许检查或修改记录的侦听器之前被调用。 我查阅了Spring文档,

  • 所以我做了一个小程序,在把字符串数组的长度设置成用户指定的大小时遇到了麻烦,你是怎么把用户输入的值分配给数组长度的呢?我有一个用于用户输入的主类,它传递给一个演示类来存储和运行一些不同的计算等。mac_attendee_limit的输入将是数组的大小 主类 } 演示课

  • 我有这样的方法。 API返回数据如下: 并且我需要将Fetch Data设置为innerHTML Boostrap卡。但要做到这一点,我需要将fetch数据设置到数组中。我如何设置我的取数组,以及如何设置取数到innerHTML Boostrap卡..? 谢谢..!