「已注销」 2015-10-22 06:08 采纳率: 0%
浏览 1538

三生大侠 猪猪侠 代码在这里

import android.app.Activity;
import android.content.Context;
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 StartMerchantActivity extends Activity {
private RecyclerView mRvDemoMain;
private Context context;
private MyRecyclerAdapter mAdapter;
protected List mList;
public static String[] URLS;
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";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.merchant);

    // 1. 初始化RecyclerView中要显示的数据
    initData();
    // 2. 初始化本页面的控件
    initView();

    mRvDemoMain = (RecyclerView) findViewById(R.id.merchant_recyclerview);
    new NewAsyncTask().execute(urlPath);
}

/**
 * 初始化RecyclerView中要显示的数据
 */
private void initData() {
    mList = new ArrayList<NewsBeam>();
    URLS = new String[mList.size()];
    for (int i = 0; i < mList.size(); i++) {
        URLS[i] = mList.get(i).newsIconUrl;
    }
}

/**
 * 初始化本页面的控件
 */
private void initView() {
    mRvDemoMain = (RecyclerView) findViewById(R.id.merchant_recyclerview);

    // 设置RecyclerView的Adapter
    mAdapter = new MyRecyclerAdapter(StartMerchantActivity.this,mList,mRvDemoMain);
    mRvDemoMain.setAdapter(mAdapter);

    // zz 测试
    System.out.println("==== mRvDemoMain.setAdapter(mAdapter)执行完了");

    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(StartMerchantActivity.this, "click : " + 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(StartMerchantActivity.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(is, "utf-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;
    }
}

}

  • 写回答

3条回答 默认 最新

  • 「已注销」 2015-10-22 06:11
    关注

    public class NewsBeam {
    public String newsIconUrl;
    public String newsTitle;
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配