Android 图像在列表视图中不可见
我有一个带有图像和文本的自定义列表视图。现在,每当我最初打开列表视图时,图像都是可见的。现在,当我滚动列表时,图像是可见的。我还设置了当,但在开始时,所有图像都是相同的,只有在我滚动列表时图像才会更改。我知道此问题与列表的回收有关,但我无法解决。请帮助我 代码Android 图像在列表视图中不可见,android,android-listview,Android,Android Listview,我有一个带有图像和文本的自定义列表视图。现在,每当我最初打开列表视图时,图像都是可见的。现在,当我滚动列表时,图像是可见的。我还设置了当,但在开始时,所有图像都是相同的,只有在我滚动列表时图像才会更改。我知道此问题与列表的回收有关,但我无法解决。请帮助我 代码 公共类ShareWithMeAdapter扩展了BaseAdapter{ 私人语境; 私有数组列表数据; 公共ShareWithMeAdapter(上下文、ArrayList数据){ this.context=上下文; 这个数据=数据;
公共类ShareWithMeAdapter扩展了BaseAdapter{
私人语境;
私有数组列表数据;
公共ShareWithMeAdapter(上下文、ArrayList数据){
this.context=上下文;
这个数据=数据;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
view=LayoutFlater.from(context).充气(R.layout.share_with_me_custom_list,viewGroup,false);
holder.tvTitle=(TextView)view.findViewById(R.id.tv\u与me\u title共享);
holder.tvName=(TextView)view.findViewById(R.id.tv\u共享名称);
holder.tvSharedOn=(TextView)view.findviewbyd(R.id.tv\u sharedwhithme\u on);
holder.image=(ImageView)view.findViewById(R.id.iv_与me_image共享);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.tvTitle.setText(data.get(i.getTitle());
if(data.get(i).getName()等于(“”){
holder.tvName.setText(“与”+data.get(i.getName())共享);
}否则{
holder.tvName.setText(“与”+data.get(i.getName())共享);
}
holder.tvSharedOn.setText(data.get(i.getDate());
如果(data.get(i).getExtension().equals(“.jpg”)|| data.get(i).getExtension().equals(“.png”)| data.get(i).getExtension().equals(“.jpg”)| data.get(i).getExtension().equals(“.gif”)| data.get(i).getExtension().equals(“.tiff”)){
holder.image.setBackgroundResource(R.drawable.image);
}
if(data.get(i).getExtension()等于(“.docx”)| | data.get(i).getExtension()等于(.doc”)){
持有者.图像.背景资源(R.drawable.docx);
}
if(data.get(i).getExtension()等于(“.xls”)| | data.get(i).getExtension()等于(“.xlxs”)){
holder.image.setBackgroundResource(R.drawable.excel);
}
if(data.get(i).getExtension()等于(“.pdf”)){
holder.image.setBackgroundResource(R.drawable.pdf);
}
//if(data.get(i).getExtension()等于(“.ppt”)){
//支架.图像.立根资源(R.可绘制);
// }
返回视图;
}
私有类视窗持有者{
text查看tvTitle、tvName、tvSharedOn;
图像视图图像;
}
}
试试这个,希望对你有帮助
全部替换
holder.image.setBackgroundResource(R.drawable.filename);
与
或者改变这些方法
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
试试这种方法,希望这能帮助你解决问题。
public class ShareWithMeAdapter extends BaseAdapter {
private Context context;
private ArrayList<SharedWithMeModel> data;
public ShareWithMeAdapter(Context context, ArrayList<SharedWithMeModel> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = LayoutInflater.from(context).inflate(R.layout.share_with_me_custom_list, null);
holder.tvTitle = (TextView) view.findViewById(R.id.tv_sharedwithme_title);
holder.tvName = (TextView) view.findViewById(R.id.tv_sharedwithme_name);
holder.tvSharedOn = (TextView) view.findViewById(R.id.tv_sharedwithme_on);
holder.image = (ImageView) view.findViewById(R.id.iv_sharedwithme_image);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.tvTitle.setText(data.get(i).getTitle());
if (data.get(i).getName().equals("")) {
holder.tvName.setText("Shared With " + data.get(i).getName());
} else {
holder.tvName.setText("Shared With " + data.get(i).getName());
}
holder.tvSharedOn.setText(data.get(i).getDate());
if (data.get(i).getExtension().equals(".jpg") || data.get(i).getExtension().equals(".png") || data.get(i).getExtension().equals(".jpeg") || data.get(i).getExtension().equals(".gif") || data.get(i).getExtension().equals(".tiff")) {
holder.image.setImageResource(R.drawable.image);
}else if (data.get(i).getExtension().equals(".docx") || data.get(i).getExtension().equals(".doc")) {
holder.image.setImageResource(R.drawable.docx);
}else if (data.get(i).getExtension().equals(".xls") || data.get(i).getExtension().equals(".xlxs")) {
holder.image.setImageResource(R.drawable.excel);
}else{
holder.image.setImageResource(R.drawable.pdf);
}
return view;
}
private class ViewHolder {
TextView tvTitle;
TextView tvName;
TextView tvSharedOn;
ImageView image;
}
}
公共类ShareWithMeAdapter扩展了BaseAdapter{
私人语境;
私有数组列表数据;
公共ShareWithMeAdapter(上下文、ArrayList数据){
this.context=上下文;
这个数据=数据;
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int i){
返回数据。获取(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
view=LayoutInflater.from(context).充气(R.layout.share\u with\u me\u custom\u list,null);
holder.tvTitle=(TextView)view.findViewById(R.id.tv\u与me\u title共享);
holder.tvName=(TextView)view.findViewById(R.id.tv\u共享名称);
holder.tvSharedOn=(TextView)view.findviewbyd(R.id.tv\u sharedwhithme\u on);
holder.image=(ImageView)view.findViewById(R.id.iv_与me_image共享);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.tvTitle.setText(data.get(i.getTitle());
if(data.get(i).getName()等于(“”){
holder.tvName.setText(“与”+data.get(i.getName())共享);
}否则{
holder.tvName.setText(“与”+data.get(i.getName())共享);
}
holder.tvSharedOn.setText(data.get(i.getDate());
如果(data.get(i).getExtension().equals(“.jpg”)|| data.get(i).getExtension().equals(“.png”)| data.get(i).getExtension().equals(“.jpg”)| data.get(i).getExtension().equals(“.gif”)| data.get(i).getExtension().equals(“.tiff”)){
holder.image.setImageResource(R.drawable.image);
}else if(data.get(i).getExtension()等于(“.docx”)| | data.get(i).getExtension()等于(.doc”)){
holder.image.setImageResource(R.drawable.docx);
}else if(data.get(i).getExtension()等于(“.xls”)| | data.get(i).getExtension()等于(.xlxs”)){
holder.image.setImageResource(R.drawable.excel);
}否则{
holder.image.setImageResource(R.drawable.pdf);
}
返回视图;
}
私有类视窗持有者{
文本视图标题;
文本视图tvName;
文本视图tvSharedOn;
图像视图图像;
}
}
能否添加listview的快照?data.get(i).getExtension().equals(“.jpg”)检查此行
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public class ShareWithMeAdapter extends BaseAdapter {
private Context context;
private ArrayList<SharedWithMeModel> data;
public ShareWithMeAdapter(Context context, ArrayList<SharedWithMeModel> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = LayoutInflater.from(context).inflate(R.layout.share_with_me_custom_list, null);
holder.tvTitle = (TextView) view.findViewById(R.id.tv_sharedwithme_title);
holder.tvName = (TextView) view.findViewById(R.id.tv_sharedwithme_name);
holder.tvSharedOn = (TextView) view.findViewById(R.id.tv_sharedwithme_on);
holder.image = (ImageView) view.findViewById(R.id.iv_sharedwithme_image);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.tvTitle.setText(data.get(i).getTitle());
if (data.get(i).getName().equals("")) {
holder.tvName.setText("Shared With " + data.get(i).getName());
} else {
holder.tvName.setText("Shared With " + data.get(i).getName());
}
holder.tvSharedOn.setText(data.get(i).getDate());
if (data.get(i).getExtension().equals(".jpg") || data.get(i).getExtension().equals(".png") || data.get(i).getExtension().equals(".jpeg") || data.get(i).getExtension().equals(".gif") || data.get(i).getExtension().equals(".tiff")) {
holder.image.setImageResource(R.drawable.image);
}else if (data.get(i).getExtension().equals(".docx") || data.get(i).getExtension().equals(".doc")) {
holder.image.setImageResource(R.drawable.docx);
}else if (data.get(i).getExtension().equals(".xls") || data.get(i).getExtension().equals(".xlxs")) {
holder.image.setImageResource(R.drawable.excel);
}else{
holder.image.setImageResource(R.drawable.pdf);
}
return view;
}
private class ViewHolder {
TextView tvTitle;
TextView tvName;
TextView tvSharedOn;
ImageView image;
}
}