Android 在列表视图中实现多布局
您好,我正在尝试在一个listview中实现多重布局,其中文件类型来自webservices,有人能建议如何实现该任务吗?下面是我的代码。我已经实现了下面的适配器,但视图中给出了null 适配器Android 在列表视图中实现多布局,android,android-layout,listview,layout,Android,Android Layout,Listview,Layout,您好,我正在尝试在一个listview中实现多重布局,其中文件类型来自webservices,有人能建议如何实现该任务吗?下面是我的代码。我已经实现了下面的适配器,但视图中给出了null 适配器 package kbs.com.dynamiclistview; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view
package kbs.com.dynamiclistview;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import java.util.ArrayList;
/**
* Created by user on 2/13/2016.
*/
public class MyCustomAdapter extends BaseAdapter {
ArrayList<Bean> slist = new ArrayList<Bean>();
Context context;
public MyCustomAdapter(ArrayList<Bean> slist, Context context) {
this.slist = slist;
this.context = context;
}
@Override
public int getCount() {
return slist.size();
}
@Override
public Object getItem(int i) {
return slist.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
final Bean bean = slist.get(i);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
if (slist.get(i).getFiletype().equalsIgnoreCase("TEXT")) {
System.out.println("In if text :--" + bean.getFiletype());
view = inflater.inflate(R.layout.textlayout, viewGroup, false);
TextView itemname = (TextView) view.findViewById(R.id.itemname);
itemname.setText(bean.filetext);
}
if (slist.get(i).getFiletype().equalsIgnoreCase("IMAGES")) {
// LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.imglayout, viewGroup, false);
System.out.println("In if image :--" + bean.getFiletype());
ImageView img = (ImageView) view.findViewById(R.id.img);
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
DisplayImageOptions option = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(1000)).cacheInMemory(true)
.cacheOnDisc(true).resetViewBeforeLoading(true)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnFail(R.drawable.close)
.showImageOnLoading(R.drawable.images).bitmapConfig(Bitmap.Config.RGB_565).build();
imageLoader.displayImage(bean.getFileurl(), img, option);
}
}
return view;
}
}
package kbs.com.dynamiclistview;
导入android.content.Context;
导入android.graphics.Bitmap;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.nostra13.universalimageloader.core.DisplayImageOptions;
导入com.nostra13.universalimageloader.core.ImageLoader;
导入com.nostra13.universialimageloader.core.imageloader配置;
导入com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
导入java.util.ArrayList;
/**
*用户于2016年2月13日创建。
*/
公共类MyCustomAdapter扩展了BaseAdapter{
ArrayList slist=新的ArrayList();
语境;
公共MyCustomAdapter(ArrayList slist,上下文){
this.slist=slist;
this.context=上下文;
}
@凌驾
public int getCount(){
返回slist.size();
}
@凌驾
公共对象getItem(int i){
返回slist.get(i);
}
@凌驾
公共长getItemId(int i){
返回i;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
final Bean=slist.get(i);
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
如果(视图==null){
if(slist.get(i).getFiletype().equalsIgnoreCase(“文本”)){
System.out.println(“In-if-text:-”+bean.getFiletype());
视图=充气机。充气(R.layout.textloayout,viewGroup,false);
TextView itemname=(TextView)view.findViewById(R.id.itemname);
itemname.setText(bean.filetext);
}
if(slist.get(i).getFiletype().equalsIgnoreCase(“图像”)){
//LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.imglayout,视图组,false);
System.out.println(“In-if-image:-”+bean.getFiletype());
ImageView img=(ImageView)view.findViewById(R.id.img);
ImageLoader ImageLoader=ImageLoader.getInstance();
init(ImageLoaderConfiguration.createDefault(上下文));
DisplayImageOptions选项=新的DisplayImageOptions.Builder().displayer(新的RoundedBitmapDisplayer(1000)).cacheInMemory(true)
.cacheOnDisc(true).在加载之前重置视图(true)
.showImageForEmptyUri(R.mipmap.ic_启动器)
.showImageOnFail(R.drawable.close)
.showImageOnLoading(R.drawable.images).bitmapConfig(Bitmap.Config.RGB_565).build();
displayImage(bean.getFileurl(),img,option);
}
}
返回视图;
}
}
您可以在示例下使用getViewTypeCount方法:
@Override
public int getViewTypeCount() {
return 2;
}
然后我们必须实现逻辑,根据位置值选择要分配给行的布局类型:
@Override public int getItemViewType(int position)
{
return (contactList.get(position).getContactType() == ContactType.CONTACT_WITH_IMAGE) ? 0 : 1;
}
您可以在getView中检查类型视图
int type = getItemViewType(position);
更多信息此链接查看此链接嗨,你能帮我举一些例子吗,因为我从未参与过回收商查看此链接谢谢。。但我想要一些例子