gpt4 book ai didi

java - ListView 随机排序项目?

转载 作者:行者123 更新时间:2023-12-01 18:49:48 24 4
gpt4 key购买 nike

我的 ListView 是随机排序项目的,当我向下或向上滚动时,项目位置随机更改,我尝试了很多方法来解决此问题,但没有成功

我用谷歌搜索,发现了太多方法来解决与扩展 ListView 相关的问题,但它不适用于我的代码

请帮忙

这是 ListView 代码

static class ViewHolder {
ImageView play;
ImageView download;
TextView rtitle;
TextView size;
TextView downloads;
RatingBar ratingsmall;
ImageView ratebutton;
long tonid;
TextView voters;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
//Get the current location object
JSONObject r = (JSONObject) getItem(position);
//Inflate the view
if (convertView == null) {
convertView = mInflater.inflate(R.layout.ringtone_bit, null);
holder = new ViewHolder();
ImageView play = (ImageView) convertView.findViewById(R.id.play);
ImageView download = (ImageView) convertView.findViewById(R.id.download);
ImageView ratebutton = (ImageView) convertView.findViewById(R.id.ratebutton);
TextView rtitle = (TextView) convertView.findViewById(R.id.rtitle);
TextView size = (TextView) convertView.findViewById(R.id.size);
TextView downloads = (TextView) convertView.findViewById(R.id.downloads);
TextView voters = (TextView) convertView.findViewById(R.id.voters);
TextView personname = (TextView) convertView.findViewById(R.id.personname);
TextView date = (TextView) convertView.findViewById(R.id.date);
RatingBar ratingsmall = (RatingBar) convertView.findViewById(R.id.ratingsmall);
//setdate
try {
Date date_g = new Date(r.getLong("timestamp") * 1000);
date.setText(date_g.toLocaleString());
} catch (JSONException e2) {}
//set person name
try {
String client_name = (r.getString("personname").equals("null") == true) ? "ghost" : r.getString("personname");
personname.setText(client_name);
} catch (JSONException e2) {}
//set total votars and vote avarage
try {
float z = (float) r.getInt("rate");
voters.setText(" ( " + r.getLong("voters") + " ) / " + z);
} catch (JSONException e2) {}
//set rating bar
try {
float z = (float) r.getInt("rate");
ratingsmall.setRating(z);
} catch (JSONException e2) {}
//set ringtone Name as defualt device language
try {
String name = (lang.equals("English") == true) ? r.getString("en_name") : r.getString("ar_name");
rtitle.setText(name);
} catch (JSONException e2) {}
//ringtone file size
try {
size.setText(r.getString("size"));
} catch (JSONException e2) {}
//set downloads
try {
downloads.setText(String.valueOf(r.getLong("downloads")));
} catch (JSONException e2) {}
//set ringtone ID toneid
try {
holder.tonid = r.getLong("toneid");
download.setTag(r.getLong("toneid"));
ratebutton.setTag(r.getLong("toneid"));
} catch (JSONException e1) {}
//set download stram url to play icon
try {
play.setTag(r.getString("stream_url"));
} catch (JSONException e) {}
//add play listener test Ringtone before download it
play.setOnClickListener(onClickListener);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}

最佳答案

我认为您误解了 ViewHolder 的用途。 ViewHolder 不是保存值,而是保存 View ,这样您就不必再次膨胀它们。即使从标签中获取View,仍然需要设置数据。

这是正确使用 View 持有者的方法:

if(convertView == null)
{
convertView = mInflater.inflate(R.layout.ringtone_bit, null);
holder = new ViewHolder();
convertView.setTag(holder);
holder.play = ( ImageView ) convertView.findViewById(R.id.play);
holder.download = ( ImageView ) convertView.findViewById(R.id.download);
holder.ratebutton = ( ImageView ) convertView.findViewById(R.id.ratebutton);
holder.rtitle = (TextView) convertView.findViewById(R.id.rtitle);
holder.size = (TextView) convertView.findViewById(R.id.size);
holder.downloads = (TextView) convertView.findViewById(R.id.downloads);
holder.voters = (TextView) convertView.findViewById(R.id.voters);
holder.personname = (TextView) convertView.findViewById(R.id.personname);
holder.date = (TextView) convertView.findViewById(R.id.date);
holder.ratingsmall = (RatingBar) convertView.findViewById(R.id.ratingsmall);
} else {
holder = (ViewHolder) convertView.getTag();
}

// Fill the data

关于java - ListView 随机排序项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com