Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在适配器中获取仅返回1项的项视图类型_Android_Android Listview_Android Adapter_Custom Adapter - Fatal编程技术网

Android 在适配器中获取仅返回1项的项视图类型

Android 在适配器中获取仅返回1项的项视图类型,android,android-listview,android-adapter,custom-adapter,Android,Android Listview,Android Adapter,Custom Adapter,我有一个自定义适配器,它将根据特定条件对两种布局进行充气。 GetItemViewType只返回位置中的一个项目,而有两个项目,当我在列表中显示它时,适配器会为一个布局充气,而另一个布局则不是,我可以在列表中看到,有一个空间留给它,但它是空的。 这是我的密码 enter code here public class ListViewAdapter extends ArrayAdapter<NewsFeed> { private static final int mission

我有一个自定义适配器,它将根据特定条件对两种布局进行充气。 GetItemViewType只返回位置中的一个项目,而有两个项目,当我在列表中显示它时,适配器会为一个布局充气,而另一个布局则不是,我可以在列表中看到,有一个空间留给它,但它是空的。 这是我的密码

enter code here
public class ListViewAdapter extends ArrayAdapter<NewsFeed>
{
    private static final int missionLayout = 0;
    private static final int badgeLayout = 1;
    private TreeSet mSeparatorsSet = new TreeSet();
    public ListViewAdapter ()
    {
        super(CityNewsFeedActivity.this,R.layout.activity_activity_city_news_feed,newsfeed);
    }
    @Override
    public int getItemViewType(int position)
    {
        return mSeparatorsSet.contains(position) ? missionLayout : badgeLayout;
    }

    @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)
        {
            NewsFeed obj = newsfeed.get(position);
            holder = new ViewHolder();
            switch (type)
            {
                case missionLayout:
                    Log.d("fet 3ala mission layout","tahet il case");
                    convertView = getLayoutInflater().inflate(R.layout.city_news_single_item, parent,false);
                    holder.civilianImage = (ImageView) convertView.findViewById(R.id.imageView2);
                    holder.heroName = (TextView) convertView.findViewById(R.id.badgename);
                    holder.description = (TextView) convertView.findViewById(R.id.description);
                    holder.timeRemaining = (TextView) convertView.findViewById(R.id.postedSince);
                    holder.relativeLayoutMission = (RelativeLayout) convertView.findViewById(R.id.relativeLayout);

                    if (obj.category.equals("mission"))
                    {

                        if (obj.accepted_rejected.equals("success"))
                        {
                            holder.relativeLayoutMission.setBackgroundResource(R.drawable.mission_successful);
                            Float alpha = Float.valueOf("0.9");
                            holder.relativeLayoutMission.setAlpha(alpha);
                            byte[] decodedString = Base64.decode(obj.picture, Base64.DEFAULT);
                            Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                            Bitmap circleBitmap = Bitmap.createBitmap(decodedByte.getWidth(), decodedByte.getHeight(), Bitmap.Config.ARGB_8888);
                            BitmapShader shader = new BitmapShader(decodedByte, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
                            Paint paint = new Paint();
                            paint.setShader(shader);
                            Canvas c = new Canvas(circleBitmap);
                            c.drawCircle(decodedByte.getWidth() / 2, decodedByte.getHeight() / 2, decodedByte.getWidth() / 2, paint);
                            holder.civilianImage.setImageBitmap(circleBitmap);
                            Drawable d = getResources().getDrawable(
                                    R.drawable.circle_shape_for_civilian_success);
                            holder.civilianImage.setBackgroundDrawable(d);
                            String hero = obj.mission_nickname;

                            holder.heroName.setText(Html.fromHtml("<font color='#FAD84F'>" + hero + "</font>" + " saved " + obj.firstname + " " + obj.lastname));
                            holder.description.setText(obj.description);
                            holder.timeRemaining.setText(obj.mission_postedSince);
                           }
                       }
                      break;
               case badgeLayout:

                    convertView =   getLayoutInflater().inflate(R.layout.badge_single_item, null);
                    holder.relativeLayoutBadge = (RelativeLayout) convertView.findViewById(R.id.relativeLayout);
                    holder.BadgeName = (TextView) convertView.findViewById(R.id.badgename);
                    holder.badgeImage = (ImageView) convertView.findViewById(R.id.imageView2);
                    holder.timeRemaining = (TextView) convertView.findViewById(R.id.postedSince);

                    if (obj.category.equals("badge"))
                    {
                        holder.relativeLayoutBadge.setBackgroundResource(R.drawable.earned_badge_post);
                        Float alpha = Float.valueOf("0.9");
                        holder.relativeLayoutBadge.setAlpha(alpha);
                        String hero = obj.nickname;
                        holder.BadgeName.setText(Html.fromHtml("<font color='#FAD84F'>" + hero + "</font>" + " earns a new badge! "));
                        Drawable d = getResources().getDrawable(R.drawable.circle_shape_for_badge);
                        holder.badgeImage.setBackgroundDrawable(d);
                        String imageUrl = "http://iamheroic.net/iamheroic/badge_images/" + obj.icon;
                        imageLoader.displayImage(imageUrl, holder.badgeImage, options);
                        holder.timeRemaining.setText(obj.postedSince);
                    }
                    break;

            }
            if (convertView != null)
            {
                convertView.setTag(holder);
            }
        }
        return convertView;
    }
}
在此处输入代码
公共类ListViewAdapter扩展了ArrayAdapter
{
私有静态最终int任务布局=0;
专用静态最终布局=1;
私有树集mseparatorset=新树集();
公共ListViewAdapter()
{
超级(CityNewsFeedActivity.this,R.layout.activity\u activity\u city\u news\u feed,newsfeed);
}
@凌驾
public int getItemViewType(int位置)
{
返回MSEParatorSet.contains(位置)?任务布局:徽章布局;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
ViewHolder=null;
int type=getItemViewType(位置);
System.out.println(“getView”+位置+“”+convertView+”类型=“+类型);
if(convertView==null)
{
NewsFeed obj=NewsFeed.get(位置);
holder=新的ViewHolder();
开关(类型)
{
案件任务安排:
日志d(“fet 3ala任务布局”、“塔赫特岛案例”);
convertView=GetLayoutFlater()。充气(R.layout.city\u news\u single\u item,parent,false);
holder.civilianImage=(ImageView)convertView.findViewById(R.id.imageView2);
holder.heroName=(TextView)convertView.findViewById(R.id.badgename);
holder.description=(TextView)convertView.findViewById(R.id.description);
holder.timeRemaining=(TextView)convertView.findViewById(R.id.postedSince);
holder.relativeLayoutMission=(RelativeLayout)convertView.findViewById(R.id.RelativeLayout);
if(目标类别等于(“任务”))
{
如果(接受对象与拒绝对象相等(“成功”))
{
持有者.相对任务.挫折背景资源(R.可提取.任务成功);
浮点α=浮点值(“0.9”);
持有人。相对发射率。设定α(α);
字节[]decodedString=Base64.decode(obj.picture,Base64.DEFAULT);
位图decodedByte=BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
Bitmap circleBitmap=Bitmap.createBitmap(decodedByte.getWidth()、decodedByte.getHeight()、Bitmap.Config.ARGB_8888);
BitmapShader着色器=新的BitmapShader(decodedByte,shader.TileMode.CLAMP,shader.TileMode.CLAMP);
油漆=新油漆();
画图。设置阴影(着色器);
画布c=新画布(圆形位图);
c、 drawCircle(decodedByte.getWidth()/2,decodedByte.getHeight()/2,decodedByte.getWidth()/2,绘制);
holder.civilianImage.setImageBitmap(circleBitmap);
Drawable d=getResources().getDrawable(
R.可拉拔。圆形(用于平民成功);
支架。civilianImage。可缩位拉深(d);
字符串hero=obj.mission_昵称;
holder.heroName.setText(Html.fromHtml(“+hero++”saved“+obj.firstname++”+obj.lastname));
保持架说明setText(对象说明);
holder.timelexing.setText(obj.mission_postedSince);
}
}
打破
案例布局:
convertView=GetLayoutFlater()。充气(R.layout.badge\u单个\u项,空);
holder.relativeLayoutBadge=(RelativeLayout)convertView.findViewById(R.id.RelativeLayout);
holder.BadgeName=(TextView)convertView.findViewById(R.id.BadgeName);
holder.badgeImage=(ImageView)convertView.findViewById(R.id.imageView2);
holder.timeRemaining=(TextView)convertView.findViewById(R.id.postedSince);
if(对象类别等于(“徽章”))
{
持有相对论徽章。挫折背景资源(R.可提取。获得的徽章职位);
浮点α=浮点值(“0.9”);
持有者。相对论徽章。设定α(α);
字符串hero=obj.昵称;
holder.BadgeName.setText(Html.fromHtml(“+hero+”+“赢得新徽章”);
Drawable d=getResources().getDrawable(R.Drawable.circle_shape_表示徽章);
支架。徽章图像。可缩位拉深(d);
字符串imageUrl=”http://iamheroic.net/iamheroic/badge_images/“+obj.icon;
imageLoader.displayImage(imageUrl、holder.badgeImage、选项);
holder.timelexing.setText(obj.postedSince);
}
打破
}
if(convertView!=null)
{
convertView.setTag(支架);
}
}
返回视图;
}
}
当我运行应用程序时,列表显示一个类型为1的布局,并为类型0留有空间,但没有显示。
任何帮助都将不胜感激。

您还必须覆盖
getViewTypeCount()
以告诉
列表视图
需要多少项目类型。它这样做是为了处理每种类型的循环视图

@Override
public int getViewTypeCount() {
    return 2;
}
我加上去了,但还是