- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 ListView 中有重复的操作问题我在互联网上做了很多研究都失败了我的问题是当我点击项目编号1它展开时,当我向下滚动分页附加更多项目时我发现项目编号10也被扩展,另一个例子,如果我切换项目编号 2,则编号 2 和编号 12 项目都会一起切换!!
如何解决这个重复问题?
这是 ListView 类
public class Ringtones_Listview extends ArrayAdapter<Object> {
int resource;
String response;
Context context;
private LayoutInflater mInflater;
MediaPlayer mp = null;
ImageView play_clicked;
View vv = null;
String lang = Locale.getDefault().getDisplayLanguage();
ArrayList ob;
Integer clickedposition;
public Ringtones_Listview(Context context, int resource, ArrayList objects) {
super(context, resource,objects);
this.context = context;
this.ob = objects;
this.resource = resource;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return ob.size();
}
public JSONObject getItem(JSONObject position) {
return position;
}
public long getItemId(int position) {
return position;
}
static class ViewHolder {
ImageView play ;
ImageView download ;
TextView rtitle;
TextView size;
TextView downloads;
TextView personname;
TextView date;
RatingBar ratingsmall;
ImageView ratebutton;
long tonid;
TextView voters;
LinearLayout more;
}
@SuppressWarnings("deprecation")
public View getView(final 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();
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);
holder.more = ( LinearLayout ) convertView.findViewById(R.id.more);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
//hide More information
holder.more.setVisibility(View.GONE);
try {
Date date_g = new Date(r.getLong("timestamp") * 1000);
holder.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");
holder.personname.setText(client_name);
} catch (JSONException e2) {}
//set total votars and vote avarage
try {
float z = (float) r.getInt("rate");
holder.voters.setText(" ( "+ r.getLong("voters") +" ) / " + z);
} catch (JSONException e2) {}
//set rating bar
try {
float z = (float) r.getInt("rate");
holder.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");
holder.rtitle.setText(name);
} catch (JSONException e2) {}
//ringtone file size
try {
holder.size.setText(r.getString("size"));
} catch (JSONException e2) {}
//set downloads
try {
holder.downloads.setText(String.valueOf( r.getLong("downloads") ));
} catch (JSONException e2) {}
//set ringtone ID toneid
try {
holder.tonid = r.getLong("toneid");
holder.download.setTag(r.getLong("toneid"));
holder.ratebutton.setTag(r.getLong("toneid"));
holder.play.setId((int) r.getLong("toneid"));
convertView.setId((int) r.getLong("toneid"));
} catch (JSONException e1) {}
//set download stram url to play icon
try {
holder.play.setTag(r.getString("stream_url"));
} catch (JSONException e) {}
//add play listener test Ringtone before download it
holder.play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
clickedposition=position;
boolean playit = false;
v.setMinimumHeight(200);
//stop Media player dont play any thing
if ( mp != null )
{
mp.stop();
mp.release();
mp = null;
}
//check for last clicked item
if ( vv != null )
{
//set last played item to play icon
vv.setBackgroundResource(R.drawable.play);
//check if last played is not smae clicked item
if( v.getTag().toString().equals( vv.getTag().toString() ) == false )
{
playit = true;
}else
//its same item dont play stop here
{
vv = null;
}
}else
//nothing played yet play it
{
playit = true;
}
if ( playit )
{
vv = v;
v.setBackgroundResource(R.drawable.preparing_player);
AnimationDrawable frameAnimation = (AnimationDrawable) v.getBackground();
frameAnimation.start();
String stramUrl = String.valueOf(v.getTag());
try {
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(stramUrl);
mp.prepareAsync();
} catch (Exception e) {}
//preparing straming
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mps) {
v.setBackgroundResource(R.drawable.played);
mps.start();
}
});
mp.setOnCompletionListener( new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
v.setBackgroundResource(R.drawable.play);
}
});
}
}
});
return convertView;
}
}
最佳答案
ListView
出于性能原因将回收 View ,它每次都会使用您的第一个膨胀 View ,因此当您展开它和向下滚动时,其他 View 也会使用相同的布局,您将能够看到扩展的 View 。
编辑:
设置
vv.setBackgroundResource(R.drawable.play);
//当您没有在 getView() 中单击播放按钮时的默认图像
我认为一次只会播放一首歌曲,因此需要一个 int 来跟踪已单击的 Imageview
像这样
整数点击位置;将其作为一个字段,然后
在单击play
ImageView 时的getView()
中,将其位置设置为clickedposition。
clickedposition=position;
在 getview 中这样检查
if(clickedposition!=null)
{
v.setBackgroundResource(R.drawable.played);
}
编辑:
int checkposition=-1;
public View getView(final int position, View convertView, ViewGroup parent)
{
......
holder.play.setBackgroundResource(R.drawable.play);
if(checkposition!=-1)
{
holder.play.setBackgroundResource(R.drawable.played);
}
return convertView;
}
关于java - Listview多重复 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240751/
当包裹在 EmberJS Controller 的 actions 中时,如何从另一个 Action 调用一个 Action ? 使用现已弃用的方式定义操作的原始代码: //app.js App.In
我有一个 Action (一个yaml文件),用于将docker镜像部署到Google Cloud Run。 我希望收到通知构建和推送结果的Slack或电子邮件。 构建操作完成后,如何触发消息操作?
Selenium 的 actions 类中存在的 tick(Action action) 和 tick(Interaction...actions) 方法的用途是什么? 是否与点击任何 webElem
简短的背景故事 我们目前为数百名用户提供对话操作。我们在过去三年中为我们的一位客户开发了这个 Action 作为“工作”。正如我们最近发现的那样,我们会受到对话行为的影响。 当然,我们现在正在研究如何
考虑系统用户可以并发方式执行两个操作,第一个操作 (A1) 仅对用户的订单执行,第二个操作 (A2) 包括在执行时执行 (A1),如下面的使用所述-案例图..((考虑A1完全执行U1,A2完全执行U2
我正在为 android 中的 ActionBar 而苦苦挣扎。 这是我的问题:我的操作项没有显示在操作栏中,而是堆叠在操作溢出中,无论我做什么.. 我花了一天的时间寻找解决方案,但我似乎找不到缺少的
我正在构建一个工作流,其中一个操作为工作流中的一个步骤提供条件。我该如何使用这个值? 该操作的值为空,因此计算结果为 false,并且从未部署过任何内容... jobs: build: s
鉴于您有一些全局 View (例如,显示加载屏幕),您可能希望在许多情况下发生这种情况,为该行为创建一个 Action 创建者/ Action 对还是为相关 Action 创建 reducer 更合适
我有一个使用 DialogFlow 构建的 Actions on Google 代理,其中包含多个操作(例如 actions.intent.MAIN 和 get_day_of_week)。 当我在 3
是否可以从我的 action.yml 文件中引用另一个 GitHub 操作? 请注意,我在这里谈论的是操作,而不是工作流程。我知道这可以通过工作流来完成,但是操作可以引用其他操作吗? 最佳答案 答案似
在 Vuex 操作中,我们有以下实现。 async actionA({ commit, dispatch }) { const data = this.$axios.$get(`/apiUrl`)
我正在将我的应用程序服务器从 Jboss 4.2 迁移到 7.1。我在 Struts 配置中收到以下错误。 struts.xml 中定义的 Action 被调用,而 Action 包中的操作未被调用。
我向 ActLand 发送请求,然后 intercept(),如果没有登录则重定向到 Login.jsp。 struts.xml:
我有一个 Action 创建器,它接受一个 id 和一个回调函数。它向服务器发送请求以执行某些操作并返回一个虚拟操作。我在这里想做的就是调用回调函数并退出,因为该虚拟操作对我来说没有用处,例如喜欢帖子
我已经使用 Html.Action 方法调用了另一个 View 。当用户单击操作链接时,我想在 subview 内使用参数调用相同的操作。 当我写这段代码时,我得到了这个错误信息: Html.Acti
是 public event Action delt = () => { Console.WriteLine("Information"); }; 的重载版本 Action delg = (a, b)
countresultsfrom.addActionListener(new ActionListener() { public void actionPerforme
我刚刚看到一个 brand-new video在 Rx 框架上,一个特别的签名引起了我的注意: Scheduler.schedule(this IScheduler, Action) 在 23:55,
我创建了一个在我的开发者帐户中完美运行的 DialogFlow 应用程序。 但我需要以另一个用户的身份对其进行测试,因此在我的 Google Action 模拟器中,我添加了另一个测试帐户作为项目的所
我正在尝试实现消息存储拦截器以在我的 JSp 上显示 ActionMessage,但无法访问 ActionMessage。有人可以提供一个链接如何实现消息存储拦截器吗? 最佳答案 这是我的一个应用程序
我是一名优秀的程序员,十分优秀!