我试图将艺术家添加到我的播放列表中,但我无法自定义适配器

时间:2017-12-19 12:23:20

标签: java android file listview

我试图添加按钮来显示信息并分享,但我不知道该怎么做。

这是MainActivity中的代码:

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

    lv = (ListView) findViewById(R.id.lvPlaylist);
    final ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory());
    items = new String[mySongs.size()];
    for (int i = 0; i < mySongs.size(); i++) {
        items[i] = mySongs.get(i).getName().toString().replace(".mp3", "").replace(".wav", "");
    }
    final ArrayAdapter<String> adp = new ArrayAdapter<String>(getApplicationContext(), R.layout.song_layout, R.id.textView, items);

    lv.setAdapter(adp);

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            startActivity(new Intent(getApplicationContext(), Player.class).putExtra("pos", position).putExtra("songlist", mySongs));            
        }
    });
}
public ArrayList<File> findSongs(File root) {
    ArrayList<File> al = new ArrayList<File>();
    File[] files = root.listFiles();

    for (File singleFile : files) {
        if (singleFile.isDirectory() && !singleFile.isHidden()) {
            al.addAll(findSongs(singleFile));
        } else {
            if (singleFile.getName().endsWith(".mp3") || singleFile.getName().endsWith(".wav")) {               
                al.add(singleFile);
            }
        }
    }
    return al;
}

歌曲标题只有一行

如何在每行的右侧添加一个按钮?

1 个答案:

答案 0 :(得分:0)

尝试实现自定义适配器。您使用了arrayAdapter

1.activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >

        <ListView
           android:id="@+id/list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

        </ListView>

    </RelativeLayout>

2.list_single.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <TableRow>
            <ImageView
                android:id="@+id/img"
                android:layout_width="50dp"
                android:layout_height="50dp"/>

            <TextView
                android:id="@+id/txt"
                android:layout_width="wrap_content"
                android:layout_height="50dp" />

    </TableRow>
    </TableLayout>

3.CustomList.Java

    public class CustomList extends ArrayAdapter<String>{

    private final Activity context;
    private final String[] web;
    private final Integer[] imageId;
    public CustomList(Activity context,
    String[] web, Integer[] imageId) {
    super(context, R.layout.list_single, web);
    this.context = context;
    this.web = web;
    this.imageId = imageId;

    }
    @Override
    public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView= inflater.inflate(R.layout.list_single, null, true);
    TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);

    ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
    txtTitle.setText(web[position]);

    imageView.setImageResource(imageId[position]);
    return rowView;
    }
    }

4.MainActivity.Java

    public class MainActivity extends Activity {
        ListView list;
        String[] web = {
            "Google Plus",
                "Twitter",
                "Windows",
                "Bing",
                "Itunes",
                "Wordpress",
                "Drupal"
        } ;
        Integer[] imageId = {
                R.drawable.image1,
                R.drawable.image2,
                R.drawable.image3,
                R.drawable.image4,
                R.drawable.image5,
                R.drawable.image6,
                R.drawable.image7

        };

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

            CustomList adapter = new
                    CustomList(MainActivity.this, web, imageId);
            list=(ListView)findViewById(R.id.list);
                    list.setAdapter(adapter);
                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                                int position, long id) {
                            Toast.makeText(MainActivity.this, "You Clicked at " +web[+ position], Toast.LENGTH_SHORT).show();

                        }
                    });

        }

    }