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 星