Skip to content

Commit

Permalink
在公司完善了一些代码
Browse files Browse the repository at this point in the history
  • Loading branch information
jarmywang committed Dec 22, 2015
1 parent af5df82 commit 49b722f
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 25 deletions.
32 changes: 32 additions & 0 deletions app/src/main/java/com/example/xrecyclerview/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,45 @@
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
new OkHttpClient().newCall(new Request.Builder()
.url("http://www.baidu.com")
.get()
.build())
.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {

}
@Override
public void onResponse(Response response) throws IOException {
btn.setText("1");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "111", Toast.LENGTH_SHORT).show();
}
});
}
});
}
public void gotoLinearActivity(View v) {
Intent intent = new Intent();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.example.xrecyclerview;

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

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

/**
* Created by jianghejie on 15/11/26.
*/
public class MyStaggeredAdapter extends RecyclerView.Adapter<MyStaggeredAdapter.ViewHolder> {
private RecyclerView recyclerView;
public ArrayList<String> datas = null;
public List<Integer> mHeights;

public MyStaggeredAdapter(RecyclerView recyclerView, ArrayList<String> datas) {
this.recyclerView = recyclerView;
this.datas = datas;
initRandomH();
}

public void addRandomH() {
if (mHeights == null) return;
if (mHeights.size() == 0) return;
for (int i = mHeights.size(); i < datas.size(); i++) {
mHeights.add((int) (Math.random() * 500) + 200);
}
}

public void initRandomH() {
if (mHeights == null)
mHeights = new ArrayList<>();
if (mHeights.size() > 0)
mHeights.clear();
for (int i = 0; i < datas.size(); i++) {
mHeights.add((int) (Math.random() * 500) + 200);
}
}

//创建新View,被LayoutManager所调用
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}

//将数据与界面进行绑定的操作
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
ViewGroup.LayoutParams mLayoutParams = viewHolder.itemView.getLayoutParams();
mLayoutParams.height = mHeights.get(position);
viewHolder.itemView.setLayoutParams(mLayoutParams);
viewHolder.mTextView.setText(datas.get(position));
}

//获取数据的数量
@Override
public int getItemCount() {
return datas.size();
}

//自定义的ViewHolder,持有每个Item的的所有界面元素
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;

public ViewHolder(View view) {
super(view);
mTextView = (TextView) view.findViewById(R.id.text);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.example.xrecyclerview;

import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
Expand All @@ -20,16 +21,19 @@

public class StaggeredGridActivity extends AppCompatActivity {
private XRecyclerView mRecyclerView;
private MyAdapter mAdapter;
private MyStaggeredAdapter mAdapter;
private ArrayList<String> listData;
private int refreshTime = 0;
private int times = 0;

private int GRIDSPAN_COUNT = 3;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recyclerview);
mRecyclerView = (XRecyclerView)this.findViewById(R.id.recyclerview);
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager( 3,
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(GRIDSPAN_COUNT,
StaggeredGridLayoutManager.VERTICAL);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(layoutManager);
Expand All @@ -48,11 +52,11 @@ public void onRefresh() {
times = 0;
new Handler().postDelayed(new Runnable(){
public void run() {

listData.clear();
for(int i = 0; i < 25 ;i++){
listData.add("item" + i + "after " + refreshTime + " times of refresh");
listData.add("item " + i + " after " + refreshTime + " times of refresh");
}
mAdapter.initRandomH();
mAdapter.notifyDataSetChanged();
mRecyclerView.refreshComplete();
}
Expand All @@ -67,36 +71,42 @@ public void onLoadMore() {
public void run() {
mRecyclerView.loadMoreComplete();
for(int i = 0; i < 25 ;i++){
listData.add("item" + i );
listData.add("item " + i);
}
mAdapter.notifyDataSetChanged();
mAdapter.addRandomH();
mRecyclerView.refreshComplete();
if(times==1) mRecyclerView.loadMoreComplete();
}
}, 1000);
} else {
new Handler().postDelayed(new Runnable() {
public void run() {

mAdapter.notifyDataSetChanged();
mRecyclerView.loadMoreComplete();
}
}, 1000);
// new Handler().postDelayed(new Runnable() {
// public void run() {
// mRecyclerView.loadMoreComplete();
// }
// }, 1000);
}
times ++;
}
});

listData = new ArrayList<String>();
listData = new ArrayList<>();
for(int i = 0; i < 25 ;i++){
listData.add("item" + i );
listData.add("item" + i);
}
mAdapter = new MyAdapter(listData);
mAdapter = new MyStaggeredAdapter(mRecyclerView, listData);

mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setOnItemClickListener(new XRecyclerView.OnItemClickListener() {
@Override
public void onItemClick(ViewGroup parent, RecyclerView.ViewHolder viewHolder, View view, int position) {
Toast.makeText(getApplicationContext(), "item click " + position, Toast.LENGTH_SHORT).show();
int spanIndex = ((StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams()).getSpanIndex();
Toast.makeText(getApplicationContext(), "root_item " + position + ",spanIndex=" + spanIndex, Toast.LENGTH_SHORT).show();
}
});
mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

}
});
}
Expand Down
33 changes: 33 additions & 0 deletions app/src/main/java/cu/Param.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package cu;

/**
* Created by Wang on 2015/12/21.
*/
public class Param {

private String key;
private String value;

public Param() {}

public Param(String key, String value) {
this.key = key;
this.value = value;
}

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}
}
18 changes: 10 additions & 8 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,27 @@
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<Button
android:onClick="gotoLinearActivity"
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:text="LinearLayoutManager"/>
android:onClick="gotoLinearActivity"
android:text="LinearLayoutManager" />

<Button
android:onClick="gotoGridActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:text="GridLayoutManager"
/>
android:onClick="gotoGridActivity"
android:text="GridLayoutManager" />

<Button
android:onClick="gotoStaggeredGridActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:text="StaggeredGridLayoutManager"
/>
android:onClick="gotoStaggeredGridActivity"
android:text="StaggeredGridLayoutManager" />

</LinearLayout>

0 comments on commit 49b722f

Please sign in to comment.