我有一个列表在一个“ListView”滚动列表使用这个混乱,分组和列表有一个标题与图标。
公共类MyCustomAdapter扩展了BaseAdapter{
private static final String ASSETS_DIR = "images/";
private static final int TYPE_HEAD = -1;
private static final int TYPE_ITEM = 0;
private static final int TYPE_SEPARATOR = 1;
private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;
private Context ctx;
private ArrayList<String> mData = new ArrayList<String>();
private LayoutInflater mInflater;
private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
public MyCustomAdapter(Context context) {
this.ctx = context;
mInflater = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void addItem(final String item) {
mData.add(item);
notifyDataSetChanged();
}
public void addSeparatorItem(final String item) {
mData.add(item);
mSeparatorsSet.add(mData.size() - 1);
notifyDataSetChanged();
}
public void addHeadItem(){
mData.add("");
mSeparatorsSet.add(0);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
//return equipos.size();
}
@Override
public String getItem(int position) {
return mData.get(position) ;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
if (position==0)
return TYPE_HEAD;
return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
}
@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
System.out.println("getView " + position + " " + convertView
+ " type = " + type);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_ITEM:
convertView = mInflater.inflate(R.layout.list_item, null);
holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
holder.textView2 = (TextView) convertView.findViewById(R.id.textView2);
holder.textView3 = (TextView) convertView.findViewById(R.id.textView3);
holder.imageView1 = (ImageView) convertView.findViewById(R.id.imageView1);
String[] datos = mData.get(position).split("-");
holder.textView1.setText(String.format(" %s - %s", datos[0],datos[1]));
holder.textView2.setText(datos[2]);
holder.textView3.setText(datos[3]);
String sel_bandera = datos[4].trim() ;
String imgFilePath = "";
if (sel_bandera.equals("verde")){
imgFilePath = ASSETS_DIR + "circle_green.png" ;
}else if (sel_bandera.equals("amarilla")){
imgFilePath = ASSETS_DIR + "circle_yellow.png";
}else {
imgFilePath = ASSETS_DIR + "circle_red.png";
}
try {
Bitmap bitmap = BitmapFactory.decodeStream(this.ctx.getResources().getAssets().open(imgFilePath));
holder.imageView1.setImageBitmap(bitmap);
//bandera.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
break;
case TYPE_SEPARATOR:
convertView = mInflater.inflate(R.layout.list_group, null);
holder.textView1 = (TextView) convertView.findViewById(R.id.textSeparator);
holder.textView1.setText(mData.get(position));
break;
case TYPE_HEAD:
convertView = mInflater.inflate(R.layout.list_head, null);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
public static class ViewHolder {
public TextView textView1;
public TextView textView2;
public TextView textView3;
public ImageView imageView1;
public TextView getTextView1() {
return textView1;
}
public void setTextView1(TextView textView1) {
this.textView1 = textView1;
}
public TextView getTextView2() {
return textView2;
}
public void setTextView2(TextView textView2) {
this.textView2 = textView2;
}
public TextView getTextView3() {
return textView3;
}
public void setTextView3(TextView textView3) {
this.textView3 = textView3;
}
public ImageView getImageView1() {
return imageView1;
}
public void setImageView1(ImageView imageView1) {
this.imageView1 = imageView1;
}
}
公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){mAdapter=new MyCustomAdapter(getActivity());
if (lista.length > 0) {
String[] datos = lista[0].split("-");
cabecera_grupo = datos[4];
}
mAdapter.addHeadItem();
for (int i = 0; i < lista.length; i++) {
String[] datos = lista[i].split("-");
String grupo = datos[4];
if (i == 0) {
mAdapter.addSeparatorItem(grupo.replace("_", " "));
}
if (!grupo.equals(cabecera_grupo)) {
mAdapter.addSeparatorItem(grupo.replace("_", " "));
cabecera_grupo = grupo;
}
mAdapter.addItem(String.format("%s - %s - %s - %s - %s",
datos[0], datos[1], datos[2], datos[3], datos[5]));
}
setListAdapter(mAdapter);
返回super.onCreateView(inflater,container,savedInstanceState);}
我建议您重写getView()方法,因为我认为您错误地使用了ViewHolder模式。阅读以下内容:http://www.jmanzano.es/blog/?p=166,或者直接删除ViewHolder并在不使用它的情况下编写getView()。
问题内容: 我有一个包含项目类别的列表视图。当我在列表上按类别标题时,它将显示另一个包含所选类别内项目的列表视图。 我通过使用ListFragment来做到这一点。我是否必须启动一个新活动并按意图一起传递类别ID? 这是我的类别: 我要添加什么以转到“项目列表”?我需要使用另一个ListFragment还是仅使用常规ListActivity? 如何从解析的JSON中检索类别ID并将其传递给列表项?
问题内容: 这是我的代码。我在ArraryAdapter上收到错误消息。 如何用数组填充? 这是我的XML: 问题答案: 片段不是上下文对象。您需要将Activity对象(Fragment.getActivity())作为第一个参数传递。
问题内容: 我有一个列表片段(导入v4支持库,构建目标是2.3.3 api 11),并且在我的代码中以下问题在目标为3.0且我未使用该库时运行正常。 现在我得到了编译错误 它告诉我将“ Fragment”更改为ExampleFragment(例如) 然后我有一个问题ft.replace命令有一个错误: 它告诉我将第一行中的ExamplesFragment改回到Fragment,这样圆就转了转 问题
问题内容: 我是Android开发的新手,正在使用JSON解析方法解析数据,使用List Fragment扩展了类,并且希望将数据显示在列表视图中,但是问题是除图像外,我获取的所有数据都非常完美,我没有不知道该怎么解决,我的回答是这样的 问题答案: 尝试使用自定义适配器的AndroidQuery: 如何将适配器设置为ListView:
我正在尝试在图形布局编辑器中预览一个。由于它没有要预览的片段布局,我只是创建了一个内部带有的xml,以查看项目的外观,并使用其中一个默认项目布局设置预览列表内容,以供尝试。 问题是: 无论发生什么情况,预览中的列表都是空的 预览我选择的列表内容; (我不知道我做错了什么,现在它起作用了) 我想预览自己的自定义列表项视图,而不仅仅是一个布局,因为当为真时,我将只做几件事 任何想法? 编辑:这个片段是
我正在尝试创建一个自定义ListView。当我测试我的代码时,我收到以下错误 在发布此问题之前,除了阅读有关 Fragments,ListFragments和ListViews的Android文档外,我还参考了以下链接。 链接1:fragmentation activity onCreateView < br >链接2:在Android上使用ListFragment的问题< br >链接3: An