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

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

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 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集