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;
}
}
}