Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 适配器第一位置=第六位置?_Android_Listview_View_Adapter - Fatal编程技术网

Android 适配器第一位置=第六位置?

Android 适配器第一位置=第六位置?,android,listview,view,adapter,Android,Listview,View,Adapter,我有个问题不应该很奇怪,但我不知道。我第一次没有用过支架,但我的最后一件物品和第一件一样,有了支架,我的最后一件物品还可以,但不是它的布局 我有一个ArrayList和适配器: listViewNews = (ListView)view.findViewById(R.id.list_news_items); newAdapter = new NewsListAdapter(getActivity(), arListNews); listViewNews.

我有个问题不应该很奇怪,但我不知道。我第一次没有用过支架,但我的最后一件物品和第一件一样,有了支架,我的最后一件物品还可以,但不是它的布局

我有一个ArrayList和适配器:

listViewNews = (ListView)view.findViewById(R.id.list_news_items);
    newAdapter = new NewsListAdapter(getActivity(),
            arListNews);

    listViewNews.setOnItemClickListener(new viewNewClickListener());

    listViewNews.setAdapter(newAdapter);
在后者中,我对列表中的第一个项目有一个特定的布局,其余的项目有一个特定的布局

公共类NewsListAdapter扩展了BaseAdapter{
 
私人语境;
私人ArrayList新闻项目;
字体自定义字体加粗,自定义字体书;
 
公共新闻列表适配器(上下文、ArrayList新闻项){
this.context=上下文;
this.newitems=新闻项;
    }
 
@覆盖
public int getCount(){
返回newsItems.size();
    }
 
@覆盖
公共对象getItem(int位置){
返回新闻项。获取(位置);
    }
 
@覆盖
公共长getItemId(int位置){
返回位置;
    }
 
@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=转换视图;
NewHolder=null;
 
如果(视图==null){
LayoutInflater mInflater=(LayoutInflater)
context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
holder=新的NewHolder();
 
如果(位置==0){//第一项
view=mInflater.充气(R.layout.new\u list\u item\u une,空);
holder.resume=(TextView)view.findViewById(R.id.resume);
}否则{//其余的
视图=mInflater.flate(R.layout.new\u list\u项,空);
            }
holder.imageActu=(ImageView)view.findViewById(R.id.imageActu);
holder.txtTitle=(TextView)view.findViewById(R.id.titu);
holder.vw=(视图)View.findViewById(R.id.colorActu);
holder.thematique=(TextView)view.findViewById(R.id.thematique);
 
视图.设置标签(支架);
}其他{
holder=(NewHolder)view.getTag();
        }
holder.imageActu.setBackgroundColor(context.getResources().getColor(R.color.grey_200_transparent));
         
holder.txtitle.setText(newitems.get(position.getitre());
 
支架.vw.setBackgroundColor(颜色.rgb(r,g,b));
 
holder.thematique.setText(th.toUpperCase());
holder.thematique.setTextColor(Color.rgb(r,g,b));
 
如果(位置==0){
resume.setText(Html.fromHtml(newitems.get(position.getResume()));
holder.resume.setTextColor(context.getResources().getColor(R.color.grey_200_transparent));
        }
返回视图;
    }
 
私有静态类NewHolder{
ImageView imageActu;
TextView-txtTitle;
大众观点;
文本视图主题化;
文本查看简历;

}
适配器重用视图。例如,如果第一个单元格视图不在屏幕上,而最后一个单元格视图需要渲染,则适配器将使用第一个视图而不是创建新视图,然后最后一个视图将与第一个视图相同

您必须为此使用viewType。只需覆盖适配器中的下一个方法:

private static final int FIRST_CELL = 0;
private static final int DEFAULT_CELL = 1;

...

public int getViewTypeCount() { 
    return 2; 
}

public int getItemViewType(int position) { 
    return position == 0 ? FIRST_CELL : DEFAULT_CELL; 
}  
在getView方法中,使用

if (getItemViewType(position) == FIRST_CELL)
而不是

if(position == 0)
适配器现在将使用不同的视图类型处理第一个单元格。
你也应该考虑使用HealeVIEW来解决这个问题。< /p> thx回答,但我不明白为什么这个问题会重复到6个项目。你是什么意思?为什么第六个项目和第一个项目一样?是的,在我的ListVIEW中(在我的设备中可视)第六个项目布局=第一个项目布局。第六个项目=第七个位置,在第七个位置之后,我不再出现在if(view==null)中。我想您需要滚动您的ListView以查看第六个项目,对吗?如果您只希望最顶端的项目有不同的布局,则建议使用ListView的标题。否则,请参见此