列表视图 Data是最里面的展示数据
我的Bean类有两个方法Root是外面的,Data是里面的核心展示列表数据
public interface ListDataView {
void onSuccess(List<Data> result);
void onFailer(String msg);
}
列表模型 Root是最外面的验证
public class ListDataModel {
public static Root getListData() {
String data = Utils.get("http://www.xieast.com/api/news/news.php");
Gson gson = new Gson();
Root root = gson.fromJson(data, Root.class);
return root;
}
}
列表Persenter
public class ListDataPersenter {
private ListDataView listDataView;
public ListDataPersenter(ListDataView listDataView) {
this.listDataView = listDataView;
}
public void getListData() {
new Thread(new Runnable() {
@Override
public void run() {
Root data = ListDataModel.getListData();
Message message = Message.obtain();
message.obj = data;
handler.sendMessage(message);
}
}).start();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Root data = (Root) msg.obj;
listDataView.onSuccess(data.getData());
}
};
}
相当于Activity 一定要implements ListDataView的两个方法
public class HomePage extends Fragment implements ListDataView {
private View view;
private ListView mListview;
private ListDataPersenter persenter;
private List<Data> mList;
private MyAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment_homepage, null);
initView(view);
return view;
}
private void initView(View view) {
mListview = (ListView) view.findViewById(R.id.listview);
mList = new ArrayList<>();
persenter = new ListDataPersenter(this);
persenter.getListData();
adapter = new MyAdapter(mList,getActivity());
mListview.setAdapter(adapter);
}
@Override
public void onSuccess(List<Data> result) {
if (result!=null) {
mList.clear();
mList.addAll(result);
adapter.notifyDataSetChanged();
}
}
@Override
public void onFailer(String msg) {
Toast.makeText(getActivity(),msg,Toast.LENGTH_SHORT).show();
}
}
适配器
public class MyAdapter extends BaseAdapter {
private List<Data> mList;
private Context context;
public MyAdapter(List<Data> mList, Context context) {
this.mList = mList;
this.context = context;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int i) {
return mList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder;
if (view==null) {
viewHolder = new ViewHolder();
view = View.inflate(context,R.layout.item_goods,null);
viewHolder.title = view.findViewById(R.id.text_title);
viewHolder.image = view.findViewById(R.id.image);
viewHolder.image1 = view.findViewById(R.id.image1);
viewHolder.image2 = view.findViewById(R.id.image2);
view.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.title.setText(mList.get(i).getTitle());
Picasso.with(context).load(mList.get(i).getThumbnail_pic_s()).into(viewHolder.image);
Picasso.with(context).load(mList.get(i).getThumbnail_pic_s02()).into(viewHolder.image1);
Picasso.with(context).load(mList.get(i).getThumbnail_pic_s03()).into(viewHolder.image2);
return view;
}
class ViewHolder {
public TextView title;
public ImageView image;
public ImageView image1;
public ImageView image2;
}
}