我正在创建在线媒体播放器。哪个用户可以创建自己的播放列表。 因此,对于每个用户,都有不同的列表。在该列表中有一个名为Quickmix的项目,它是修复的,位于该列表的顶部。 我想在Quickmix文本附近显示图标,并且还希望在当前播放的播放列表名称附近显示一个图标。 为了显示该列表,我在xml文件中创建了一个ListView。 我创建了PlayListActivity.java,它扩展了Activity。 在那个班级我创建了一个ArrayAdapter
private ArrayAdapter< String > mPlayListAdapter = null;
private ListView mPlayList = null;
private String[] mPlayListNames = null;
在onCreate方法中我的代码就像
setContentView( R.layout.playlist_layout );
mPlayList = new String[array.length ];
for( int i = 0; i < length; i++ )
{
mPlayListNames[i] = array[i].mPlayList;
}
mPlayList = ( ListView )findViewById( R.id.playList );
try {
mPlayListAdapter =
new ArrayAdapter< String >( this,
android.R.layout.simple_list_item_1,
mPlayListNames );
mPlayList.setAdapter( mPlayListAdapter );
mPlayList.setOnItemClickListener( mPlayListListener );
} catch( Exception e ) {
Intent nextActivityIntent = new Intent(
getApplicationContext(),
Welcome.class );
finish();
startActivity( nextActivityIntent );
return;
}
/**
* Called when user clicks on any playlist name. This listener starts
* playback of that playlist.
*/
private OnItemClickListener mPlayListListener =
new OnItemClickListener()
{
public void onItemClick( AdapterView<?> parent, View view,
int position, long id )
{
Intent nextActivityIntent = new Intent( view.getContext(),
SomeActivity.class );
//Some code to start SomeActivity
}
};
我无法将ListActivity / any扩展到PlayListActivity.java 我只能扩展活动。
有没有解决方法如何做到这一点?
答案 0 :(得分:0)
您必须创建ListAdapter。例如:
private class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private Bitmap mIcon1;
private Bitmap mIcon2;
public EfficientAdapter(Context context) {
// Cache the LayoutInflate to avoid asking for a new one each time.
mInflater = LayoutInflater.from(context);
}
/**
* The number of items in the list is determined by the number of speeches
* in our array.
*
* @see android.widget.ListAdapter#getCount()
*/
public int getCount() {
return stations.length;
}
/**
* Since the data comes from an array, just returning the index is
* sufficent to get at the data. If we were using a more complex data
* structure, we would return whatever object represents one row in the
* list.
*
* @see android.widget.ListAdapter#getItem(int)
*/
public Object getItem(int position) {
return position;
}
/**
* Use the array index as a unique id.
*
* @see android.widget.ListAdapter#getItemId(int)
*/
public long getItemId(int position) {
return position;
}
/**
* Make a view to hold each row.
*
* @see android.widget.ListAdapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
public View getView(final int position, View convertView, ViewGroup parent) {
// A ViewHolder keeps references to children views to avoid unneccessary calls
// to findViewById() on each row.
// When convertView is not null, we can reuse it directly, there is no need
// to reinflate it. We only inflate a new View when the convertView supplied
// by ListView is null.
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listitem, null);
// Creates a ViewHolder and store references to the two children views
// we want to bind data to.
TextView textView = (TextView) convertView.findViewById(R.id.text1);
textView.setText(stations[position]);
} else {
// Get the ViewHolder back to get fast access to the TextView
// and the ImageView.
}
return convertView;
}
}
您可以使用此适配器:
mPlayList.setListAdapter(new EfficientAdapter(ctx));
你如何理解,在R.layout.listitem你可以创建你的按钮。在方法getView中 - 您必须处理此按钮。
UPD:使用Bitmap的例子: 您可以在getView中添加它:
ImageView im = new ImageView(this);
im.setImageBitmap(bitmap);
convertView.addView(im);
答案 1 :(得分:0)