recyclerview-进入页面虚拟机崩溃,找不到错误,求大神帮改下源码,谢谢啦

问题描述

进入页面虚拟机崩溃,找不到错误,求大神帮改下源码,谢谢啦
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class StartCanteenActivity extends Activity
{
private static final String urlPath = ""http://www.imooc.com/api/teacher?type=4&num=30"";
//private static final String urlPath = ""http://14.117.17.161/json.php"";
private RecyclerView mRvDemoMain;
private MyRecyclerAdapter mAdapter;
private List mList;

@Overrideprotected void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);    setContentView(R.layout.canteen);    mRvDemoMain = (RecyclerView) findViewById(R.id.canteen_recyclerview);    new NewAsyncTask().execute(urlPath);    initView();}/** * 初始化本页面的控件 */private void initView() {    mRvDemoMain.setAdapter(mAdapter);    // 设置RecyclerView的布局管理器    mRvDemoMain.setLayoutManager(new StaggeredGridLayoutManager(3 StaggeredGridLayoutManager.VERTICAL));    mRvDemoMain.setItemAnimator(new DefaultItemAnimator());    // 调用Adapter中的设置监听器的方法    mAdapter.setOnItemClickListener(new MyRecyclerAdapter.OnItemClickListener() {        @Override        public void onItemClick(View view int position) {            Toast.makeText(StartCanteenActivity.thisclick : "" + position Toast.LENGTH_SHORT).show();        }    });}/** * 实现网络的异步访问 */class NewAsyncTask extends AsyncTask<String Void List<NewsBeam>>{    @Override    protected void onPostExecute(List<NewsBeam> newsBeams)    {        super.onPostExecute(newsBeams);        MyRecyclerAdapter adapter = new MyRecyclerAdapter(StartCanteenActivity.this newsBeams mRvDemoMain);        mRvDemoMain.setAdapter(adapter);    }    @Override    protected List<NewsBeam> doInBackground(String... params)    {        return getJsonData(params[0]);    }    /**     * 从 URL 中获取数据     *     * @param url     * @return     */    private List<NewsBeam> getJsonData(String url)    {        List<NewsBeam> newsBeamsList = new ArrayList<NewsBeam>();        try        {            String jsonString = readStream(new URL(urlPath).openStream());            JSONObject jsonObject;            NewsBeam newsBeam;            jsonObject = new JSONObject(jsonString);            JSONArray jsonArray = jsonObject.getJSONArray(""data"");            for(int i = 0; i < jsonArray.length(); i++)            {                jsonObject = jsonArray.getJSONObject(i);                newsBeam = new NewsBeam();                newsBeam.newsIconUrl = jsonObject.getString(""picSmall"");                newsBeam.newsTitle = jsonObject.getString(""name"");                newsBeamsList.add(newsBeam);            }        }        catch(IOException e)        {            e.printStackTrace();        }        catch(JSONException e)        {            e.printStackTrace();        }        return newsBeamsList;    }    /**     * 从 inpustStream 获取的信息     *     * @param is     * @return     */    private String readStream(InputStream is)    {        InputStreamReader isr;        String result = """";        try        {            isr = new InputStreamReader(isutf-8"");            BufferedReader br = new BufferedReader(isr);            String line = """";            while((line = br.readLine()) != null)            {                result += line;            }        }        catch(UnsupportedEncodingException e)        {            e.printStackTrace();        }        catch(IOException e)        {            e.printStackTrace();        }        return result;    }}

}

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

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

public class MyRecyclerAdapter extends RecyclerView.Adapter {
protected LayoutInflater mLayoutInflater;
private Context mContext;
protected List mList;
private List mHeights; // 随机高度的集合
private ImgLoader mImgLoader;
private int mStart;
private int mEnd;
public static String[] URLS;
private boolean mFirstIn;
private MyRecyclerAdapter(List mList) {
this.mList = mList;
}

/** * 自定义一个OnItemClickListener的回调接口 */public interface OnItemClickListener{    void onItemClick(View view int position);}/** * 创建接口的成员变量 */private OnItemClickListener mOnItemClickListener;/** * 设置监听器的方法 * @param listener listener */public void setOnItemClickListener(OnItemClickListener listener){    this.mOnItemClickListener = listener;}/** * 构造方法 * @param context context * @param data data */public MyRecyclerAdapter(Context context List<NewsBeam> dataRecyclerView recyclerView) {    this.mContext = context;    this.mList = data;    mLayoutInflater = LayoutInflater.from(mContext);    mImgLoader = new ImgLoader(recyclerView);    mLayoutInflater = LayoutInflater.from(mContext);    mHeights = new ArrayList<Integer>();    // 向随机高度集合中添加随机数(100 ~ 400)    for (int i = 0; i < mList.size(); i++) {        mHeights.add((int) (100 + Math.random() * 300));    }    URLS = new String[data.size()];    for(int i = 0; i < data.size(); i++)    {        URLS[i] = data.get(i).newsIconUrl;    }    mFirstIn = true;}/** * RecyclerView中条目的数量 * * @return count */@Overridepublic int getItemCount() {    return mList.size();}/** * 创建ViewHolder * * @param parent   parent * @param viewType viewType * @return holder */@Overridepublic MyRecyclerHolder onCreateViewHolder(ViewGroup parent int viewType) {    // zz 测试    System.out.println(""====onCreateViewHolder : "" + viewType + "" == "" + parent);    View view = mLayoutInflater.inflate(R.layout.recycler_item parent false);    MyRecyclerHolder mHolder = new MyRecyclerHolder(view);    return mHolder;}/** * 绑定ViewHolder * * @param holder   holder * @param position position */@Overridepublic void onBindViewHolder(final MyRecyclerHolder holder final int position) {    // 为ViewHolder的父控件(也即一条Item)设置高度    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();    lp.height = mHeights.get(position);    holder.itemView.setLayoutParams(lp);    holder.mIvItem.setImageBitmap(null);    holder.mIvItem.setImageResource(R.mipmap.ic_launcher);    String url = mList.get(position).newsIconUrl;    holder.mIvItem.setTag(url);    mImgLoader.showImgByAysncTask(holder.mIvItem url);    holder.mTvItem.setText(mList.get(position).newsTitle);    // 调用条目的点击事件设置方法    setUpItemEvent(holder);    // zz 测试    System.out.println(""====onBindViewHolder : "" + position + "" == "" + holder);}/** * 设置条目的点击事件(点按) * @param holder holder */protected void setUpItemEvent(final MyRecyclerHolder holder) {    if (mOnItemClickListener != null) {        holder.itemView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                int layoutPosition = holder.getLayoutPosition();                mOnItemClickListener.onItemClick(holder.itemView layoutPosition);            }        });    }}/** * RecyclerView的ViewHolder类 */public class MyRecyclerHolder extends RecyclerView.ViewHolder {    ImageView mIvItem;    TextView mTvItem;    public MyRecyclerHolder(View itemView) {        super(itemView);        mIvItem = (ImageView) itemView.findViewById(R.id.id_image);        mTvItem = (TextView) itemView.findViewById(R.id.id_name);    }}

}

解决方案

代码太多,建议自己调试

时间: 2025-01-20 13:46:16

recyclerview-进入页面虚拟机崩溃,找不到错误,求大神帮改下源码,谢谢啦的相关文章

struts2.0-初学Struts2,总是出现404问题,不知道是哪里写错了,实在是找不到,求大神们帮忙。。

问题描述 初学Struts2,总是出现404问题,不知道是哪里写错了,实在是找不到,求大神们帮忙.. jsp页: Struts.xml: <?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://strut

equals-Arraylist 去重复时编写去重方法没有运行找不到错误在哪?求大神帮看一下

问题描述 Arraylist 去重复时编写去重方法没有运行找不到错误在哪?求大神帮看一下 class Person { private String name; private int age; Person (String nameint age) { this.name = name; this.age =age; } public void setName(String name) { this.name = name; } public void setAge(int age) { th

javascrip-一个JS小程序出现了超级奇怪的bug,实在找不到问题求大神支招

问题描述 一个JS小程序出现了超级奇怪的bug,实在找不到问题求大神支招 <!DOCTYPE html><html><head> <title>Hello World</title> <link rel=""stylesheet"" type=""text/css"" href=""Marion.css""> <

json-$.getJSO求大神帮忙写下ASP页面代码 小弟不胜感激

问题描述 $.getJSO求大神帮忙写下ASP页面代码 小弟不胜感激 var ghost = window.location.hostname+"":2258"";function Guard() { this.Users = new Array(); this.GetCount = function () { return this.Users.length; } this.FindObject = function (name) { var u = null;

android 一个button 标签出错。莫名其妙!找不到,希望大神帮我看看 在线等

问题描述 android 一个button 标签出错.莫名其妙!找不到,希望大神帮我看看 在线等 1C 解决方案 红线不是标了有错吗? 解决方案二: 对啊 那种错误看不懂 解决方案三: 首先,你要确定你在res/values/style.xml这个文件中你已经设置了dialog_blue_button这个属性,这样起码能够找到这个对象,如果有的话你可以clean一下整个工程,让Eclipse重新编译一次,因为有时候Eclipse反应慢,不clean不会刷新工程目录,你试试,不行可以问我. 解决方

使用reactiveCocoa提示找不到文件求大神帮助下

问题描述 使用reactiveCocoa提示找不到文件求大神帮助下 /PrefixHeader.pch:36:9: 'ReactiveCocoa.h' file not found?PNG

页面-java web网上书店有个问题 求大神帮忙看下

问题描述 java web网上书店有个问题 求大神帮忙看下 前一个页面一个表单传值, 请输入收货地址: 后面在OrderServlet中处理 其中的数据库中的操作没有问题 但是连到OrderServlet中出现求大神帮忙!!!!! 解决方案 你点击继续看看什么效果啊,如果有问题就贴出来 解决方案二: 没有效果就是停在这个servlet了,而且数据库方法也没有实现 解决方案三: 数据库方法也没有实现

求大神帮我用c#正则匹配查询一下html页面的代码

问题描述 求大神帮我用c#正则匹配查询一下html页面的代码 <div class=""result c-container ************* </a></div>< 中间****号为要查找的内容 解决方案 有嵌套的div没有?有的话还不如字符串前后截取.没有可以用下面的 Regex rx = new Regex(""<div\s+class=""result c-container[^>

虚拟机下构架hadoop测试跑wordcount报错,求大神帮帮忙.

问题描述 虚拟机下构架hadoop测试跑wordcount报错,求大神帮帮忙. 用虚拟机虚拟一台namenode,三台datanode,配置完成可以运行起来,也可以在网页中查看状态,但是跑wordcount时出现了task id:attempt_1441184180788_0001 status:failed的错误,也没有抛出,实在没有办法,具体问题截屏如下,望大神们给予帮助 解决方案 http://www.cnblogs.com/madyina/p/3708153.html 解决方案二: 几台