如何给ListView的每一行使用不同的背景图片?

Featured 2011-02-27 04:07:05
注意:是背景图片;不是icon图片。

另外,我实际需要使用的是ExpandableListview,不过这两者应该差不多的吧。
...全文
627 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
btwuxin 2011-08-14
  • 打赏
  • 举报
回复
看不懂啊 怎么和ListView感觉差那么多呢
小裴同学 2011-03-01
  • 打赏
  • 举报
回复
自定义adapter

public View getView(int position, View convertView, ViewGroup parent) {
View myView = inflater.inflate(R.layout.XXX, null);

if(position==1){
myView.setBackgroundDrawable(R.id.XXX);
}
if(osition==2){
myView.setBackgroundDrawable(R.id.XXX);
}

}
whatwhy83 2011-03-01
  • 打赏
  • 举报
回复
使用adapter时,用map指定多个control和对应的资源drawable
Featured 2011-03-01
  • 打赏
  • 举报
回复
你第一个回复就已经可以了!多谢!
小裴同学 2011-03-01
  • 打赏
  • 举报
回复
楼主我来了。帮你解决了。。这次绝对没问题。。
package com.pei;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

public class TestExpandableList extends Activity {

ExpandableListView expandableList;
public String[] str1 = { "xxxx好友", "xxxx同学", "xxxxx女人" };
public String[] str2 = { "xxxx好友", "xxxx同学" };

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
expandableList = (ExpandableListView) TestExpandableList.this
.findViewById(R.id.ExpandableListView01);
expandableList.setAdapter(new TreeViewAdapter(this));
}

public class TreeViewAdapter extends BaseExpandableListAdapter {
private LayoutInflater inflater;
private LayoutInflater inflater1;

public TreeViewAdapter(Context c) {
this.inflater = LayoutInflater.from(c);
this.inflater1 = LayoutInflater.from(c);
}

@Override
public Object getChild(int groupPosition, int childPosition) {

return childPosition;

}

@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View myView = inflater1.inflate(R.layout.cc, null);
if (groupPosition == 0) {
myView.setBackgroundResource(R.drawable.icon);
}
if (groupPosition == 1) {
myView.setBackgroundResource(R.drawable.icon);
}
TextView textview = (TextView) myView
.findViewById(R.id.TextView001);
textview.setText(str2[childPosition]);
return myView;
}

@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return 2;
}

@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return "dd";

}

@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return 3;
}

@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View myView = inflater.inflate(R.layout.dd, null);
if (groupPosition == 0) {
myView.setBackgroundResource(R.drawable.icon);
}
if (groupPosition == 1) {
myView.setBackgroundResource(R.drawable.icon);
}
if (groupPosition == 2) {
myView.setBackgroundResource(R.drawable.icon);
}
TextView textview = (TextView) myView.findViewById(R.id.TextView01);
textview.setText(str1[groupPosition]);
return myView;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}

}
}

Featured 2011-02-28
  • 打赏
  • 举报
回复
谢谢大家,我来试一下。不过,如我上面所说,我真正想实现的是ExpandableListview上面定制背景图片,不知道它的话有什么不同?
ameyume 2011-02-28
  • 打赏
  • 举报
回复
重写Adapter类,实现自定义的list item
gujinf2008 2011-02-28
  • 打赏
  • 举报
回复
说的都差不多,楼主网上搜搜例子应该可以解决了。
芸芸芸芸 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feifanup 的回复:]

使用adapter时,用map指定多个control和对应的资源drawable, text etc
[/Quote]


这样是可以实现的
sky123123 2011-02-28
  • 打赏
  • 举报
回复
如果你item很多的话 那肯定是很占用内存的吧
文斌 2011-02-28
  • 打赏
  • 举报
回复
派生自己的Adapter,在GetView中根据Position,利用ImageView加载图片并与你的其他内容组合成一个view或viewGroup或Layout返回,即可。
feifanup 2011-02-28
  • 打赏
  • 举报
回复
ArrayList<HashMap<String, Object>> m_data = new ArrayList<HashMap<String, Object>>();

for xxx
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("background", R.id.drawableBGXXX);
map.put("text", R.id.stringXXXXX);
m_data.add(map);
}
SimpleAdapter m_adapter= new SimpleAdapter(窗口句柄
,m_data //data source
,R.layout.XXX
,new String[]{"background", "text"}
,new int[]{R.id.CONTROLTOSETBACKGROUND, R.id.CONTROLTEXTVIEW});
Featured 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 feifanup 的回复:]
ArrayList<HashMap<String, Object>> m_data = new ArrayList<HashMap<String, Object>>();

for xxx
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("background", R.id.drawableBG……
[/Quote]

兄弟,我试了这些代码;似乎并不能真正修改背景图片哎。

应该是需要xml文件的吧。真正实现背景绘制的是在xml文件里面。你能不能把xml文件或者整个工程贴上来?多谢了
Featured 2011-02-27
  • 打赏
  • 举报
回复
楼上说的有点笼统。有没有多一点的解释??
CyberLogix 2011-02-27
  • 打赏
  • 举报
回复
用map指定多个control和对应的资源drawable
feifanup 2011-02-27
  • 打赏
  • 举报
回复
使用adapter时,用map指定多个control和对应的资源drawable, text etc

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧