更改Android中所选列表项的布局

更改Android中所选列表项的布局,第1张

概述我需要创建一个ListView并仅为所选行显示更详细的布局,以便向客户显示更多信息.我尝试的是以下内容: newsListView.setAdapter(new NewsListAdapter(this, news));newsListView.setOnItemClickListener(new OnItemClickListener() { @Override public 我需要创建一个ListVIEw并仅为所选行显示更详细的布局,以便向客户显示更多信息.我尝试的是以下内容:
newsListVIEw.setAdapter(new Newslistadapter(this,news));newsListVIEw.setonItemClickListener(new OnItemClickListener() {    @OverrIDe    public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) {        LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);        //Here I trIEd to change layout of this row only        vIEw = inflater.inflate(R.layout.Listitem_news_selected,null);        TextVIEw info = (TextVIEw) vIEw.findVIEwByID(R.ID.info);        NewsData news = (NewsData) parent.getItemAtposition(position);        info.setText(news.getInfo());    }});

这是Newslistadapter:

public class Newslistadapter extends BaseAdapter {    List<NewsData> items;    Activity context;    /* private vIEw holder class */    private class VIEwHolder {        TextVIEw Title;        ImageVIEw image;    }    @OverrIDe    public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) {        VIEwHolder holder = null;        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);        if (convertVIEw == null) {            convertVIEw = mInflater.inflate(R.layout.Listitem_news,null);            holder = new VIEwHolder();            holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.Title);            holder.image = (ImageVIEw) convertVIEw.findVIEwByID(R.ID.imageVIEw1);                        convertVIEw.setTag(holder);        } else {            holder = (VIEwHolder) convertVIEw.getTag();        }        NewsData news = items.get(position);        holder.Title.setText(news.getTitle());        new DownloadImageTask(holder.image).execute(news.getimgurl());        return convertVIEw;    }}

In this question,类似的问题被问到,但它没有帮助我.我猜我需要用Adapter做一些事情,但我被困在这里.任何想法将不胜感激.

解决方法 你正在做什么甚至不会改变ListVIEw项目的视图,你正在膨胀一个未知的视图.

解:

在适配器中创建一个方法来设置所选项的位置:

public voID selectedItem(int position){   this.position = position; //position must be a global variable}

当位置等于点击项位置时,在getVIEw中为视图充气

@OverrIDepublic VIEw getVIEw(int position,VIEwGroup parent) {    VIEwHolder holder = null;    LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);    if (convertVIEw == null) {        convertVIEw = mInflater.inflate(R.layout.Listitem_news,null);        holder = new VIEwHolder();        holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.Title);        holder.image = (ImageVIEw) convertVIEw.findVIEwByID(R.ID.imageVIEw1);                    convertVIEw.setTag(holder);    } else {        holder = (VIEwHolder) convertVIEw.getTag();    }    NewsData news = items.get(position);    holder.Title.setText(news.getTitle());    new DownloadImageTask(holder.image).execute(news.getimgurl());    if(this.position == position)    {        vIEw2 = mInflater.inflate(R.layout.Listitem_news_selected,null);        TextVIEw info = (TextVIEw) vIEw2.findVIEwByID(R.ID.info);        info.setText(news.getInfo());        return vIEw2;    }    return convertVIEw;}

在你的onItemClick中使用它

Newslistadapter adapter = new Newslistadapter(this,news);newsListVIEw.setAdapter(adapter );newsListVIEw.setonItemClickListener(new OnItemClickListener() {    @OverrIDe    public voID onItemClick(AdapterVIEw<?> parent,long ID) {          adapter.selectedItem(position);          adapter.notifyDataSetChange();    }});

始终有适配器的引用/对象,因此您可以在单击它时刷新ListVIEw.

总结

以上是内存溢出为你收集整理的更改Android中所选列表项的布局全部内容,希望文章能够帮你解决更改Android中所选列表项的布局所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1130762.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存