- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
第一次启动 ListView 时,标题按预期显示。当我向下滚动并出现时,相同的 ListView ,标题消失。当我删除 set 和 getTag 代码时,这个问题就解决了。但这阻碍了 ListView 的性能。我在这里做错了什么导致了这个问题。
package com.mediaplayer.adapter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
public class ReadLisstAdapter extends BaseAdapter implements OnScrollListener {
private Activity activity;
ArrayList<SongInfo> song_array;
private LayoutInflater inflater = null;
BaseAdapter adapter;
ListView lv;
Thread t;
ImageDownloader imageLoader;
SongInfoDatabase database;
String searchString = "";
DecimalFormat format;
int min, sec, total;
public ReadLisstAdapter(Activity activity2, ArrayList<SongInfo> song_array,
ListView lv) {
activity = activity2;
this.song_array = song_array;
this.lv = lv;
imageLoader = new ImageDownloader(this,
activity.getApplicationContext());
database = new SongInfoDatabase(activity.getApplicationContext());
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.lv = lv;
imageLoader.loadImage(0, 10);
lv.setOnScrollListener(this);
format = new DecimalFormat("#.00");
}
public ArrayList<SongInfo> getUrlList() {
return song_array;
}
public int getCount() {
// TODO Auto-generated method stub
return song_array.size();
}
public ListView getListView() {
return lv;
}
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public class ViewHolder {
public TextView title;
public TextView duration;
public TextView album;
public TextView artist;
public ImageView image;
public TextView header;
int pos;
}
public View getView(final int arg0, View vi, ViewGroup arg2) {
ViewHolder holder;
if (vi == null) {
holder = new ViewHolder();
vi = inflater.inflate(R.layout.songlist_item, null);
holder.header = (TextView) vi.findViewById(R.id.label_header_textview);
holder.title = (TextView) vi.findViewById(R.id.song_textView);
holder.image = (ImageView) vi.findViewById(R.id.songlist_imageView);
holder.album = (TextView) vi.findViewById(R.id.song_album_textView);
holder.artist = (TextView) vi
.findViewById(R.id.song_artist_textView);
holder.duration = (TextView) vi
.findViewById(R.id.song_duration_textView);
holder.pos = arg0;
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
try {
holder.title.setText(song_array.get(arg0).getTitle());
total = Integer.parseInt(song_array.get(arg0).getDuration()) / 1000;
min = total / 60;
sec = total % 60;
holder.duration.setText(min + ":" + sec);
holder.album.setText("from " + song_array.get(arg0).getAlbum());
holder.artist.setText("by " + song_array.get(arg0).getArtist());
Uri albumArtUri = Uri
.parse("content://media/external/audio/albumart");
final Uri uri = ContentUris.withAppendedId(albumArtUri,
Long.parseLong(song_array.get(arg0).getAlbum_id()));
holder.image.setImageBitmap(imageLoader.getDrawble(uri.toString()));
if (song_array.get(arg0).getTitle().trim().toUpperCase(Locale.US)
.charAt(0) != song_array.get(arg0 - 1).getTitle().trim()
.toUpperCase(Locale.US).charAt(0)) {
setSection(holder.header, song_array.get(arg0).getTitle());
} else {
holder.header.setVisibility(View.GONE);
}
} catch (Exception e) {
setSection(holder.header, song_array.get(arg0).getTitle());
}
return vi;
}
private void setSection(TextView text, String label) {
text.setBackgroundColor(0xffe47168);
text.setTextColor(Color.GREEN);
text.setText((label.substring(0, `enter code here`1) + "").toUpperCase());
text.setTextSize(15);
text.setPadding(5, 0, 0, 0);
text.setGravity(Gravity.CENTER_VERTICAL);
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
switch (scrollState) {
case SCROLL_STATE_IDLE:
imageLoader.loadImage(lv.getFirstVisiblePosition(),
lv.getLastVisiblePosition());
break;
}
}
}
最佳答案
有 holder.header.setVisibility(View.GONE)
但没有匹配的 setVisibility(View.VISIBLE)
使标题在 View 中再次可见被回收成为标题。
通常,您的 getView()
应该在回收 View 中重新配置所有内容。如果有用于某些自定义的 if
分支,则应该有一个恢复默认值的 else
分支。
关于android - setTag 和 getTag 问题 android listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022657/
我从 Web 服务中获取值并将其填充到 textviews 中,我还在某些值上设置标签,因为我必须在单击按钮时将这些值发送到其他 Activity 。但我只得到数组的最后一个值。 txt_TransS
在 View 的子类上有一个 getTag() 方法,它从 .xml 返回 android:tag 属性的值。我希望 MenuItem 也一样...可以将它转换为 View 吗?因为 item 元素还
我在 imageview 上设置了一个标签为“空白”,所以它在 xml 文件中看起来像这样 android:tag="blank" 现在当我运行这个 ((String) buttons[button-
我正在使用 fragment 创建一个 ListView,其中填充了 CheckBoxes。我尽力根据其他问题找到解决方案,但我似乎无法修复它。当我不使用以下命令运行脚本时: convertView.
在我的代码中,我有两个 Activity ,第一个 Activity 在 map 上显示制造商,第二个 Activity 显示有关该标记的信息。在异步任务中,我正在搜索某个位置并将信息对象作为标签添加
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我们知道当我们在列表/ GridView 中使用 ViewHolder 模式时,我们使用 setTag/getTag 来获取信息。但是在我的代码中,如果我通过简单的静态 ViewHolder 替换它,
使用其中使用了多个 fragment 的应用程序,并且以下代码用于获取 fragment 的选定位置。 private BaseFragment getSelectedFragment(Fragmen
大家好, 我有一个 ListView,每行包含一个 Button。以下代码是getView()方法的一部分 public View getView(final int position, View c
我尝试使用我的其中一个按钮的 ID 设置标签: int boeserzufall = (int) (Math.random()*23); Button boese = arr.ge
我在这里检查了有关 setTag 和 getTag 的其他问题,但我不明白。我在这里设置标签 buttonA.setOnClickListener(new View.OnClickListene
我被困住了,我需要帮助。我正在尝试使用 set 和 get Tag,但我无法了解它如何用于此操作: 我正在使用 ListView 显示加载到扩展适配器的图像 自定义适配器使用 imageview_1、
是的,我知道在调用这些需要 key 的函数版本时需要一个唯一的资源 ID,但我终究无法弄清楚如何创建可以以这种方式使用的资源 ID。我类的最终变量不会起作用,硬编码值也不会起作用。两者都抛出 Ille
View类型对象的setTag()、getTag()等方法的主要用途是什么? 我是否认为我可以将任意数量的对象与单个 View 相关联? 最佳答案 假设您生成了一堆相似的 View 。您可以为每个 V
本文整理了Java中com.cloud.utils.xmlobject.XmlObject.getTag()方法的一些代码示例,展示了XmlObject.getTag()的具体用法。这些代码示例主要来
我正在尝试在 VS2010 中为自定义文件格式创建一些语法突出显示。在广泛窃取Ook! Language之后msdn 上的示例,我能够突出显示文件中的关键字。我对此很满意。但是,该示例按行分割 Sna
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
第一次启动 ListView 时,标题按预期显示。当我向下滚动并出现时,相同的 ListView ,标题消失。当我删除 set 和 getTag 代码时,这个问题就解决了。但这阻碍了 ListView
我的目标(为了一个简单的例子)是检测对 LinearLayout 内的 ImageView 的点击。使用 RecyclerView 设置一个项目列表,每个项目都由一个 LinearLayout 表示。
我知道基本的不同是 setId() 将 int 作为参数,而 setTag() 将 Object 。我正在询问更多有关实用建议的信息。 当我以编程方式生成更多相同的元素时,我通过 setId(++co
我是一名优秀的程序员,十分优秀!