adapter适配器(3分钟入手)

SuperBase

package com.example.smartcity.adpter;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public abstract class SuperBase extends BaseAdapter {
    public SuperBase(int mList) {
        this.mList = mList;
    }

    private int mList;


    @Override
    public int getCount() {
        return mList;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public abstract View getView(int position, View convertView, ViewGroup parent);

}

SuperBases(选中item更换样式)

package com.example.smartcity.adpter;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public abstract class SuperBases extends BaseAdapter {
    public SuperBases(int mList) {
        this.mList = mList;
    }

    private int mList;


    @Override
    public int getCount() {
        return mList;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public abstract View getView(int position, View convertView, ViewGroup parent);

    public abstract void setSelectItem(int position);
}

SuperPage

package com.example.smartcity.adpter;

import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

public abstract class SuperPage extends PagerAdapter {
    private int mList;

    public SuperPage(int mList) {
        this.mList = mList;
    }

    @Override
    public int getCount() {
        return mList;
    }

    @NonNull
    @Override
    public abstract Object instantiateItem(@NonNull ViewGroup container, int position);

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
}

SuperPages(有圆圈标识)

package com.example.smartcity.adpter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import com.example.smartcity.R;

public abstract class SuperPages extends PagerAdapter {

    private int mList;
    private RadioGroup mCircle;
    private Context context;

    public SuperPages(int mList, RadioGroup radioGroup, Context context) {
        this.mList = mList;
        this.mCircle = radioGroup;
        this.context = context;
        setCircle();//设置圆圈标识
    }

    public void setCircle(){
        for (int i = 0; i < mList; i++) {
            RadioButton radioButton = new RadioButton(context);
            radioButton.setButtonDrawable(R.drawable.circle_select);
            radioButton.setId(i);
            mCircle.addView(radioButton);
        }
    }

    @Override
    public int getCount() {
        return mList;
    }

    @NonNull
    @Override
    public abstract Object instantiateItem(@NonNull ViewGroup container, int position);

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
}

NewsAdapter

package com.example.smartcity.adpter;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import com.example.smartcity.R;
import com.example.smartcity.activity.main.NewsInfoActivity;
import com.example.smartcity.bean.NewsInfoSkip;
import com.example.smartcity.info.NewsInfo;
import com.example.smartcity.info.NewsType;
import com.example.smartcity.utils.GetNetImage;
import com.example.smartcity.utils.KeyUtils;

import java.util.ArrayList;
import java.util.List;

import static com.example.smartcity.utils.KeyUtils.NEWS;

public class NewsAdapter extends PagerAdapter {
    private Context context;
    private List<NewsType.DataDTO> mTabs;
    private List<NewsInfo.RowsDTO> mNewsInfo;

    public NewsAdapter(Context context, List<NewsType.DataDTO> mTabs, List<NewsInfo.RowsDTO> mNewsInfo) {
        this.context = context;
        this.mTabs = mTabs;
        this.mNewsInfo = mNewsInfo;
    }

    //获取选项卡表头
    public CharSequence getPageTitle(int position){
        return mTabs.get(position).getName();
    }


    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ListView listView = new ListView(context);
        setListView(listView,position);
        container.addView(listView);
        return listView;
    }
    
    //设置listView
    public void setListView(ListView listView,int position){
        //分类数据
        ArrayList<NewsInfo.RowsDTO> newsInfos = new ArrayList<>();
        for (int i = 0; i < mNewsInfo.size(); i++) {
            if (mNewsInfo.get(i).getType().equals(mTabs.get(position).getId()+"")){
                newsInfos.add(mNewsInfo.get(i));
            }
        }

        //设置适配器
        SuperBase superBase = new SuperBase(newsInfos.size()) {
            private ImageView mNewsImg;
            private TextView mNewsTitle;
            private TextView mNewsContent;
            private TextView mNewsMsg;
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = LayoutInflater.from(context).inflate(R.layout.item_news,parent,false);
                mNewsImg = (ImageView) convertView.findViewById(R.id.news_img);
                mNewsTitle = (TextView) convertView.findViewById(R.id.news_title);
                mNewsContent = (TextView) convertView.findViewById(R.id.news_content);
                mNewsMsg = (TextView) convertView.findViewById(R.id.news_msg);

                new GetNetImage(context,newsInfos.get(position).getCover(),mNewsImg);
                mNewsTitle.setText(newsInfos.get(position).getTitle());
                mNewsContent.setText(newsInfos.get(position).getContent());
                String msg = "评论总数:"+newsInfos.get(position).getCommentNum()+"\t\t发布时间:"+newsInfos.get(position).getPublishDate();
                mNewsMsg.setText(msg);
                return convertView;
            }
        };
        listView.setAdapter(superBase);
        //listView条目点击事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                NewsInfoSkip newsInfoSkip = new NewsInfoSkip();

                NewsInfo.RowsDTO rowsDTO = newsInfos.get(position);
                newsInfoSkip.setImage(rowsDTO.getCover());
                newsInfoSkip.setTitle(rowsDTO.getTitle());
                newsInfoSkip.setContent(rowsDTO.getContent());
                Intent intent = new Intent(context, NewsInfoActivity.class);
                intent.putExtra(NEWS,newsInfoSkip);
                context.startActivity(intent);
            }
        });
    }


    @Override
    public int getCount() {
        return mTabs.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}

LiveNewsAdapter(生活新闻)

package com.example.smartcity.adpter;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import com.example.smartcity.R;
import com.example.smartcity.activity.main.NewsInfoActivity;
import com.example.smartcity.bean.NewsInfoSkip;
import com.example.smartcity.info.NewsInfo;
import com.example.smartcity.info.NewsType;
import com.example.smartcity.info.life.LiveNews;
import com.example.smartcity.info.life.LiveNewsType;
import com.example.smartcity.utils.GetNetImage;

import java.util.ArrayList;
import java.util.List;

import static com.example.smartcity.utils.KeyUtils.NEWS;

public class LiveNewsAdapter extends PagerAdapter {
    private Context context;
    private List<LiveNewsType.DataDTO> mTabs;
    private List<LiveNews.RowsDTO> mNewsInfo;

    public LiveNewsAdapter(Context context, List<LiveNewsType.DataDTO> mTabs, List<LiveNews.RowsDTO> mNewsInfo) {
        this.context = context;
        this.mTabs = mTabs;
        this.mNewsInfo = mNewsInfo;
    }

    //获取选项卡表头
    public CharSequence getPageTitle(int position){
        return mTabs.get(position).getName();
    }


    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ListView listView = new ListView(context);
        setListView(listView,position);
        container.addView(listView);
        return listView;
    }
    
    //设置listView
    public void setListView(ListView listView,int position){
        //分类数据
        ArrayList<LiveNews.RowsDTO> newsInfos = new ArrayList<>();
        for (int i = 0; i < mNewsInfo.size(); i++) {
            if (mNewsInfo.get(i).getType().equals(mTabs.get(position).getId()+"")){
                newsInfos.add(mNewsInfo.get(i));
            }
        }

        //设置适配器
        SuperBase superBase = new SuperBase(newsInfos.size()) {
            private ImageView mNewsImg;
            private TextView mNewsTitle;
            private TextView mNewsContent;
            private TextView mNewsMsg;
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = LayoutInflater.from(context).inflate(R.layout.item_news,parent,false);
                mNewsImg = (ImageView) convertView.findViewById(R.id.news_img);
                mNewsTitle = (TextView) convertView.findViewById(R.id.news_title);
                mNewsContent = (TextView) convertView.findViewById(R.id.news_content);
                mNewsMsg = (TextView) convertView.findViewById(R.id.news_msg);

                new GetNetImage(context,newsInfos.get(position).getCover(),mNewsImg);
                mNewsTitle.setText(newsInfos.get(position).getTitle());
                mNewsContent.setText(newsInfos.get(position).getContent());
                String msg = "评论总数:"+newsInfos.get(position).getCommentNum()+"\t\t发布时间:"+newsInfos.get(position).getPublishDate();
                mNewsMsg.setText(msg);
                return convertView;
            }
        };
        listView.setAdapter(superBase);
        //listView条目点击事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                NewsInfoSkip newsInfoSkip = new NewsInfoSkip();

                LiveNews.RowsDTO rowsDTO = newsInfos.get(position);
                newsInfoSkip.setImage(rowsDTO.getCover());
                newsInfoSkip.setTitle(rowsDTO.getTitle());
                newsInfoSkip.setContent(rowsDTO.getContent());
                Intent intent = new Intent(context, NewsInfoActivity.class);
                intent.putExtra(NEWS,newsInfoSkip);
                context.startActivity(intent);
            }
        });
    }


    @Override
    public int getCount() {
        return mTabs.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的示例代码,展示如何创建一个自定义适配器(Adapter)来填充ListView的数据: ```java public class MyAdapter extends BaseAdapter { private Context mContext; private List<String> mData; public MyAdapter(Context context, List<String> data) { mContext = context; mData = data; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { // 如果convertView为空,说明还没有被实例化,需要创建ViewHolder对象,并将其与布局文件进行绑定 convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false); viewHolder = new ViewHolder(); viewHolder.textView = convertView.findViewById(R.id.text_view); convertView.setTag(viewHolder); } else { // 如果convertView不为空,则直接从convertView中获取ViewHolder对象 viewHolder = (ViewHolder) convertView.getTag(); } // 设置数据 String item = mData.get(position); viewHolder.textView.setText(item); return convertView; } // ViewHolder类,用于缓存控件实例,避免重复查找 private static class ViewHolder { TextView textView; } } ``` 在上述代码中,首先定义了一个自定义适配器`MyAdapter`,该适配器继承自`BaseAdapter`。在构造方法中传入上下文和数据源,然后实现了必要的方法,包括`getCount()`、`getItem()`、`getItemId()`和`getView()`。 在`getView()`方法中,首先判断convertView是否为null,如果为null则说明需要创建新的布局实例,并将其与ViewHolder对象进行绑定。然后通过ViewHolder对象获取布局中的控件实例,并设置数据。 最后,可以使用`setAdapter()`方法将自定义适配器与ListView进行绑定: ```java ListView listView = findViewById(R.id.list_view); MyAdapter adapter = new MyAdapter(this, dataList); listView.setAdapter(adapter); ``` 其中,`dataList`是一个包含要显示的数据的List集合。通过调用`setAdapter()`方法,将自定义适配器与ListView绑定,即可实现数据填充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玛丽莲.梦露

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值