【发布时间】:2014-01-05 10:34:56
【问题描述】:
我有一个列表,在我从共享首选项中获得的特定数字(位置)上应该显示一个图像视图(指示当前正在播放的歌曲)。但我得到了位置,但该项目也显示在其他行上。滚动列表时出现问题。
*当我退出另一个活动时会发生这种情况,并且在我恢复时我会这样做:
@Override
protected void onResume() {
super.onResume();
if(AlbumDetails.mediaPlayer!=null)
adapter = new PlaylistAdapter(this, songs);
list.setAdapter(adapter);
}
这是我的代码:
public class PlaylistAdapter extends BaseAdapter {
private Activity activity;
private static LayoutInflater inflater = null;
private ArrayList<Songs> data;
private DatabaseHelper db;
private SharedPreferences prefs;
int playpos;
public PlaylistAdapter(Activity a, ArrayList<Songs> songs) {
activity = a;
data = songs;
db = new DatabaseHelper(a);
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
prefs = activity.getSharedPreferences("com.darkovski.quran",
Context.MODE_PRIVATE);
playpos = prefs.getInt("posPlaying", -1);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView,
final ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.song_item, parent, false);
ImageView download = (ImageView) vi
.findViewById(R.id.playlist_item_download);
db.openDB();
if (db.isDownloaded(data.get(position).getNumber(), data.get(position)
.getRecitorName(), data.get(position).getRecitorID()))
download.setImageResource(R.drawable.download_yes);
else {
download.setImageResource(R.drawable.download_no);
download.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new DownloadFileFromURL(activity, data.get(position)
.getRecitorName(), data.get(position).getTitle(),
data.get(position).getLink(), data.get(position)
.getNumber(), data.get(position)
.getRecitorID()).execute();
if (!db.isDBOpen())
db.openDB();
db.addDownloaded(data.get(position).getNumber(),
data.get(position).getLink(), 0, data.get(position)
.getRecitorID(), "", data.get(position)
.getTitle());
Toast.makeText(activity,
"Downloading " + data.get(position).getTitle(),
Toast.LENGTH_SHORT).show();
}
});
}
db.closeDB();
TextView number = (TextView) vi.findViewById(R.id.playlist_item_num);
TextView title = (TextView) vi.findViewById(R.id.playlist_item_reciter);
title.setText(data.get(position).getTitle());
number.setText((position + 1) + "");
ImageView eq = (ImageView) vi.findViewById(R.id.playlist_item_equlizer);
//this is where i show the item
if (playpos == position) {
eq.setVisibility(View.VISIBLE);
}
return vi;
}
}
这就是它的外观:
【问题讨论】:
-
如果您发现它有帮助,请接受答案。这不是巴伯店……
-
@Triode 如果你向下滚动你会看到有一个接受的答案
标签: java android android-listview android-adapter