ListView第一张图片有的时候和第二张重叠了,但是单独测试的时候又没有这个问题
IndexFrame
package com.example.noel.taskproj.frame;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.Toast;
import com.example.noel.taskproj.MainActivity;
import com.example.noel.taskproj.adapter.IndexListAdapter;
import com.example.noel.taskproj.bean.IndexBean;
import com.example.noel.taskproj.adapter.IndexGridAdapter;
import com.example.noel.taskproj.R;
import com.example.noel.taskproj.bean.LessonInfo;
import com.example.noel.taskproj.bean.LessonResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Created by NOEL on 2018/12/2.
*/
public class IndexFrame extends Fragment implements AdapterView.OnItemClickListener {
private View view;
private GridView gridView;
private ListView listView;
private ProgressDialog dialog;
private static final String PATH = "http://www.imooc.com/api/shopping?type=11";
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.frame_index, null);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
initAdapter();
new ListTask().execute(PATH);
initList();
}
public void initView() {
gridView = (GridView) view.findViewById(R.id.index_gridView);
listView = (ListView) view.findViewById(R.id.index_list_view);
dialog = new ProgressDialog(getActivity());
dialog.setTitle("提示");
dialog.setMessage("正在加载中....");
}
public void initList() {
listView.setOnItemClickListener(this);
}
public void initAdapter() {
IndexGridAdapter indexGridAdapter = new IndexGridAdapter(getActivity(), mList());
gridView.setAdapter(indexGridAdapter);
}
public List<IndexBean> mList() {
List<IndexBean> indexBeanList = new ArrayList<IndexBean>();
IndexBean indexBean = new IndexBean();
indexBean.setIco(R.mipmap.fly1);
indexBean.setName("机票");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.car);
indexBean.setName("车票");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.autombile1);
indexBean.setName("汽车");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.cake);
indexBean.setName("蛋糕");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.food);
indexBean.setName("美食");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.watch);
indexBean.setName("手表");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.cp);
indexBean.setName("电脑");
indexBeanList.add(indexBean);
indexBean = new IndexBean();
indexBean.setIco(R.mipmap.phone);
indexBean.setName("手机");
indexBeanList.add(indexBean);
return indexBeanList;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
switch (position) {
case 2:
getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.frame_layout, new PrawnsFrame()).commit();
break;
}
}
class ListTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog.show();
}
@Override
protected String doInBackground(String... strings) {
return request(PATH);
}
private String request(String path) {
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(30000);
connection.setRequestMethod("GET");
connection.connect();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
return stringBuilder.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
LessonResult lessonResult = null;
if (result != null) {
lessonResult = new LessonResult();
try {
JSONObject jsonObject = new JSONObject(result);
lessonResult.setStatus(jsonObject.getInt("status"));
lessonResult.setMsg(jsonObject.getString("msg"));
List<LessonInfo> lessonInfos = new ArrayList<>();
JSONArray dataArray = jsonObject.getJSONArray("data");
for (int i = 0; i < dataArray.length(); i++) {
JSONObject tempJSONObject = (JSONObject) dataArray.get(i);
LessonInfo lessonInfo = new LessonInfo();
lessonInfo.setName(tempJSONObject.getString("name"));
lessonInfo.setDescription(tempJSONObject.getString("description"));
lessonInfo.setPrice("¥" + tempJSONObject.getString("price"));
lessonInfo.setAction(tempJSONObject.getString("action"));
lessonInfo.setCount("已售" + tempJSONObject.getString("price"));
lessonInfo.setImg(tempJSONObject.getString("img"));
lessonInfos.add(lessonInfo);
lessonResult.setLessonInfos(lessonInfos);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else if (result == null) {
Toast.makeText(getActivity(), "请求数据失败....", Toast.LENGTH_SHORT).show();
}
listView.setAdapter(new IndexListAdapter(getActivity(), lessonResult.getLessonInfos()));
dialog.dismiss();
}
}
}
IndexListAdapter
package com.example.noel.taskproj.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.noel.taskproj.R;
import com.example.noel.taskproj.bean.DownImage;
import com.example.noel.taskproj.bean.LessonInfo;
import java.util.List;
/**
* Created by NOEL on 2018/12/3.
*/
public class IndexListAdapter extends BaseAdapter {
private Context context;
private List<LessonInfo> infos;
public IndexListAdapter(Context context, List<LessonInfo> infos) {
this.context = context;
this.infos = infos;
}
@Override
public int getCount() {
return infos.size();
}
@Override
public Object getItem(int position) {
return infos.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.item_list, null);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.list_icon);
viewHolder.title = (TextView) convertView.findViewById(R.id.list_title);
viewHolder.msg = (TextView) convertView.findViewById(R.id.list_msg);
viewHolder.price = (TextView) convertView.findViewById(R.id.list_price);
viewHolder.action = (TextView) convertView.findViewById(R.id.list_action);
viewHolder.count = (TextView) convertView.findViewById(R.id.list_count);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
LessonInfo lessonInfo = infos.get(position);
viewHolder.icon.setImageResource(R.mipmap.ic_launcher);
viewHolder.title.setText(lessonInfo.getName());
viewHolder.msg.setText(lessonInfo.getDescription());
viewHolder.price.setText(lessonInfo.getPrice());
viewHolder.action.setText(lessonInfo.getAction());
viewHolder.count.setText(lessonInfo.getCount());
DownImage downImage = new DownImage(infos.get(position).getImg().toString());
downImage.loadImage(new DownImage.ImageCallBack() {
@Override
public void getDrawable(Drawable drawable) {
viewHolder.icon.setImageDrawable(drawable);
}
});
return convertView;
}
public class ViewHolder {
private ImageView icon;
private TextView title;
private TextView msg;
private TextView price;
private TextView action;
private TextView count;
}
}
LessonInfo
package com.example.noel.taskproj.bean;
/**
* Created by NOEL on 2018/12/3.
*/
public class LessonInfo {
private String name;
private String img;
private String count;
private String price;
private String description;
private String action;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
}
LessonResult
package com.example.noel.taskproj.bean;
import java.util.ArrayList;
import java.util.List;
/**
* Created by NOEL on 2018/12/3.
*/
public class LessonResult {
private int status;
private String msg;
List<LessonInfo> lessonInfos=new ArrayList<>();
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public List<LessonInfo> getLessonInfos() {
return lessonInfos;
}
public void setLessonInfos(List<LessonInfo> lessonInfos) {
this.lessonInfos = lessonInfos;
}
}
DownImage 自定义图片加载类
package com.example.noel.taskproj.bean;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import java.io.IOException;
import java.net.URL;
/**
* Created by NOEL on 2018/12/3.
*/
public class DownImage {
public String image_path;
public DownImage(String image_path) {
this.image_path = image_path;
}
public void loadImage(final ImageCallBack callBack){
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Drawable drawable= (Drawable) msg.obj;
callBack.getDrawable(drawable);
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
Drawable drawable=Drawable.createFromStream(new URL(image_path).openStream(),"");
Message message=Message.obtain();
message.obj=drawable;
handler.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
public interface ImageCallBack {
public void getDrawable(Drawable drawable);
}
}0
收起
正在回答
1回答
“ListView第一张图片有的时候和第二张重叠了,但是单独测试的时候又没有这个问题”不明白是什么意思。另你需要确认一下listView的高度不能用wrap_content否则会重复计算,绘图,可能会导致重复加载。或者你提交作业时,在显示处,说明你的情况,老师会给你对应的批复说明的。祝:学习愉快
Android网络操作与数据存储2018版
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星