Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SimpleAdapter中的Android多对象_Android_Listview_Simpleadapter - Fatal编程技术网

SimpleAdapter中的Android多对象

SimpleAdapter中的Android多对象,android,listview,simpleadapter,Android,Listview,Simpleadapter,我需要(除非您能想出更好的方法)将多个对象传递给自定义列表适配器。我知道我找错了方向,如果有人能让我走上正确的道路,我将不胜感激 谢谢 playlistadapter = new MyPlaylistAdapter(MyApplication.getAppContext(), songsList, retained_songsList,

我需要(除非您能想出更好的方法)将多个对象传递给自定义列表适配器。我知道我找错了方向,如果有人能让我走上正确的道路,我将不胜感激

谢谢

playlistadapter = new MyPlaylistAdapter(MyApplication.getAppContext(),
                                        songsList,
                                        retained_songsList,
                                        folderMode,
                                        R.layout.file_view, 
                                        new String[] { "songTitle","songAlbum", "songPath" }, 
                                        new int[] { R.id.checkTextView, R.id.text2, R.id.text3 });
和我的适配器类:

public class MyPlaylistAdapter extends SimpleAdapter{
        private ArrayList <Song> songsList = new ArrayList<Song>();
        private ArrayList <Song> retained_songsList = new ArrayList<Song>();
        private ArrayList<Song> playlistcheck = new ArrayList<Song>();
        private String folderMode;
        private String TAG = "AndroidMediaCenter";
          public MyPlaylistAdapter(Context context,List<Song> SongsList, List<Song> Retained_songsList, String FolderMode,int resource, String[] from, int[] to) {
            super(context, null, resource, from, to);

            songsList.clear();
            songsList.addAll(SongsList);

            Log.i(TAG, "MyPlayListAdapter Songslist = " + songsList.size());
            retained_songsList.clear();
            retained_songsList.addAll(Retained_songsList);
            folderMode = FolderMode;

        }
        public View getView(int position, View convertView, ViewGroup parent) {
              //PlayListViewHolder holder;
              CheckedTextView checkTextView; 
              TextView text2; 
              TextView text3;
              if (convertView == null) {

              LayoutInflater inflater = (LayoutInflater) MyApplication.getAppContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              //LayoutInflater inflater=getLayoutInflater();
              convertView=inflater.inflate(R.layout.file_view, parent, false);
              //convertView.setBackgroundColor(0xFF00FF00 );
              //holder = new PlayListViewHolder();
              checkTextView = (CheckedTextView) convertView.findViewById(R.id.checkTextView);
              text2 = (TextView) convertView.findViewById(R.id.text2);
              text3 = (TextView) convertView.findViewById(R.id.text3);
              //convertView.setTag(holder);
              } else {
                  //holder = (PlayListViewHolder) convertView.getTag();
              }
              //put something into textviews
              String tracks = null;
              String tracks_Details = null;
              String trackspath = null;

              tracks = songsList.get(position).getSongTitle();
              tracks_Details = songsList.get(position).getAlbum() + " (" + songsList.get(position).getArtist() + ")";
              trackspath = songsList.get(position).getSongPath();                  

              checkTextView = (CheckedTextView) convertView.findViewById(R.id.checkTextView);
              text2 = (TextView) convertView.findViewById(R.id.text2);
              text3 = (TextView) convertView.findViewById(R.id.text3);


              checkTextView.setText(tracks);



             if(folderMode.equals("Playlists")){
                 checkTextView.setBackgroundColor(Color.GREEN); 
                 checkTextView.setChecked(false);

             try {


                 int listsize_rs = retained_songsList.size();

                     for (int j = 0; j<listsize_rs;j++){
                         if((retained_songsList.get(j).getSongPath()).equals(songsList.get(position).getSongPath())){
                            checkTextView.setBackgroundColor(Color.TRANSPARENT);
                             //Need to check here whether the checkedtextview is ticked or not
                            checkTextView.setChecked(true);
                            playlistcheck.add(songsList.get(position));
                            break;
                        }

                     }
                  } catch (Exception e) {
                 e.printStackTrace();
             }

             }else
             {
                 //Need to check here whether the checkedtextview is ticked or not

                 try {
                     if (songsList.get(position).getSongCheckedStatus()==true){

                         checkTextView.setChecked(true);
                         }else{
                         checkTextView.setChecked(false); 
                         }

                 } catch (Exception e) {
                     e.printStackTrace();
                 }
             }


             text2.setText(tracks_Details);
             text3.setText(trackspath);


             Log.i(TAG, "MyPlayListAdapter Songslist = " + songsList.size());

             return convertView;
             }



      }
1) 第一行表示需要将对象传递到适配器中。您的代码表明您正在这样做。所以你的隐含问题是模棱两可的

2) 它不起作用,因为您在构造函数中传递了null(而不是列表)

super(context, null, resource, from, to);
这就是我们所期望的:

3) 在适配器的构造函数中传递的null会导致简单适配器的内部列表为null。它为null表示SimpleAdapter.getCount()没有对象(列表)来获取其数量。

1)第一行表示需要将对象传递到适配器中。您的代码表明您正在这样做。所以你的隐含问题是模棱两可的

2) 它不起作用,因为您在构造函数中传递了null(而不是列表)

super(context, null, resource, from, to);
这就是我们所期望的:


3) 在适配器的构造函数中传递的null会导致简单适配器的内部列表为null。它为null表示SimpleAdapter.getCount()没有对象(列表)可获取的数量。

AedonEtLIRA,谢谢您的帮助。最后,我选择将
simpledapter
更改为
ArrayAdapter

public class MyPlayListAdapter extends ArrayAdapter<Song> {

private ArrayList<Song> songsList;
private ArrayList<Song> playlistcheck = new ArrayList<Song>();
private ArrayList <Song> retained_songsList = new ArrayList<Song>();
private String folderMode;
private String TAG = "AndroidMediaCenter";



public MyPlayListAdapter(Context context, int textViewResourceId, ArrayList<Song> songsList, ArrayList<Song> retained_songsList, String folderMode) {
        super(context, textViewResourceId, songsList);
        this.songsList = songsList;
        this.retained_songsList = retained_songsList;
        this.folderMode = folderMode;
}

埃多内特拉,谢谢你的帮助。最后,我选择将
simpledapter
更改为
ArrayAdapter

public class MyPlayListAdapter extends ArrayAdapter<Song> {

private ArrayList<Song> songsList;
private ArrayList<Song> playlistcheck = new ArrayList<Song>();
private ArrayList <Song> retained_songsList = new ArrayList<Song>();
private String folderMode;
private String TAG = "AndroidMediaCenter";



public MyPlayListAdapter(Context context, int textViewResourceId, ArrayList<Song> songsList, ArrayList<Song> retained_songsList, String folderMode) {
        super(context, textViewResourceId, songsList);
        this.songsList = songsList;
        this.retained_songsList = retained_songsList;
        this.folderMode = folderMode;
}

你在问什么?例外是什么,或者你需要一个新的适配器算法?投票否决我有点苛刻!第一行表示我需要将多个对象传递给简单适配器。代码就是我尝试的方式。那不行。那…怎么办?你在问什么?例外是什么,或者你需要一个新的适配器算法?投票否决我有点苛刻!第一行表示我需要将多个对象传递给简单适配器。代码就是我尝试的方式。那不行。那么…怎么做?