-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
657 additions
and
122 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
package com.test; | ||
|
||
import androidx.annotation.NonNull; | ||
import androidx.appcompat.app.AppCompatActivity; | ||
import androidx.recyclerview.widget.LinearLayoutManager; | ||
import androidx.recyclerview.widget.RecyclerView; | ||
|
||
import android.app.Activity; | ||
import android.content.Context; | ||
import android.content.Intent; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.widget.TextView; | ||
|
||
import com.test.helper.ItemClickHelperActivity; | ||
import com.test.helper.R; | ||
import com.test.helper.ScrollToPositionHelperActivity; | ||
import com.test.helper.SelectableHelperActivity; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
import recyclerview.helper.ItemClickHelper; | ||
import recyclerview.helper.ItemClickableAdapter; | ||
|
||
public class MainActivity extends AppCompatActivity { | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
List<TestListAdapter.Item> itemList = new ArrayList<>(); | ||
|
||
itemList.add(new TestListAdapter.Item("ItemClickHelper", ItemClickHelperActivity.class)); | ||
itemList.add(new TestListAdapter.Item("SelectableHelper", SelectableHelperActivity.class)); | ||
itemList.add(new TestListAdapter.Item("ScrollToPositionHelper", ScrollToPositionHelperActivity.class)); | ||
|
||
RecyclerView recyclerView = findViewById(R.id.recyclerView); | ||
recyclerView.setLayoutManager(new LinearLayoutManager(this)); | ||
recyclerView.setAdapter(new TestListAdapter(this, itemList)); | ||
} | ||
|
||
private static class TestListAdapter extends ItemClickableAdapter<TestListAdapter.ViewHolder> { | ||
private Context mContext; | ||
private List<Item> mItemList; | ||
|
||
TestListAdapter(Context context, List<Item> itemList) { | ||
mContext = context; | ||
mItemList = new ArrayList<>(itemList); | ||
|
||
setOnItemClickListener(new ItemClickHelper.OnItemClickListener() { | ||
@Override | ||
public void onItemClicked(int position, int viewId, View view, RecyclerView.ViewHolder holder) { | ||
Intent intent = new Intent(mContext, mItemList.get(position).activity); | ||
mContext.startActivity(intent); | ||
} | ||
}); | ||
} | ||
|
||
@NonNull | ||
@Override | ||
public TestListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | ||
return new ViewHolder(LayoutInflater.from(parent.getContext()) | ||
.inflate(android.R.layout.simple_list_item_1, parent, false)); | ||
} | ||
|
||
@Override | ||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { | ||
super.onBindViewHolder(holder, position); | ||
|
||
holder.text1.setText(mItemList.get(position).title); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return mItemList.size(); | ||
} | ||
|
||
private static class ViewHolder extends RecyclerView.ViewHolder { | ||
TextView text1; | ||
|
||
ViewHolder(@NonNull View itemView) { | ||
super(itemView); | ||
text1 = itemView.findViewById(android.R.id.text1); | ||
} | ||
} | ||
|
||
private static class Item { | ||
String title; | ||
Class<? extends Activity> activity; | ||
|
||
Item(String title, Class<? extends Activity> activity) { | ||
this.title = title; | ||
this.activity = activity; | ||
} | ||
} | ||
} | ||
} |
116 changes: 116 additions & 0 deletions
116
app/src/main/java/com/test/helper/ItemClickHelperActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
package com.test.helper; | ||
|
||
import androidx.annotation.NonNull; | ||
import androidx.appcompat.app.AppCompatActivity; | ||
import androidx.recyclerview.widget.LinearLayoutManager; | ||
import androidx.recyclerview.widget.RecyclerView; | ||
|
||
import android.content.Context; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.widget.Button; | ||
import android.widget.TextView; | ||
import android.widget.Toast; | ||
|
||
import recyclerview.helper.ItemClickHelper; | ||
|
||
public class ItemClickHelperActivity extends AppCompatActivity { | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_item_click_helper); | ||
|
||
RecyclerView recyclerView = findViewById(R.id.recyclerView); | ||
recyclerView.setLayoutManager(new LinearLayoutManager(this)); | ||
recyclerView.setAdapter(new ItemClickHelperAdapter(this, 50)); | ||
} | ||
|
||
public static class ItemClickHelperAdapter extends RecyclerView.Adapter<ItemClickHelperAdapter.ViewHolder> { | ||
private Context mContext; | ||
private int mSize; | ||
private ItemClickHelper mItemClickHelper; | ||
|
||
ItemClickHelperAdapter(Context context, int size) { | ||
mContext = context; | ||
mSize = size; | ||
mItemClickHelper = new ItemClickHelper(); | ||
|
||
mItemClickHelper.setOnItemClickListener(new ItemClickHelper.OnItemClickListener() { | ||
@Override | ||
public void onItemClicked(int position, int viewId, View view, RecyclerView.ViewHolder holder) { | ||
switch (viewId) { | ||
case R.id.item: | ||
Toast.makeText(mContext, "ItemClicked, position: " + position, Toast.LENGTH_SHORT).show(); | ||
break; | ||
case R.id.button: | ||
Toast.makeText(mContext, "ButtonClicked, position: " + position, Toast.LENGTH_SHORT).show(); | ||
break; | ||
} | ||
} | ||
}); | ||
|
||
mItemClickHelper.setOnItemLongClickListener(new ItemClickHelper.OnItemLongClickListener() { | ||
@Override | ||
public boolean onItemLongClicked(int position, int viewId, View view, RecyclerView.ViewHolder holder) { | ||
switch (viewId) { | ||
case R.id.item: | ||
Toast.makeText(mContext, "ItemLongClicked, position: " + position, Toast.LENGTH_SHORT).show(); | ||
return true; | ||
case R.id.button: | ||
Toast.makeText(mContext, "ButtonLongClicked, position: " + position, Toast.LENGTH_SHORT).show(); | ||
return true; | ||
} | ||
|
||
return false; | ||
} | ||
}); | ||
} | ||
|
||
@Override | ||
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { | ||
super.onAttachedToRecyclerView(recyclerView); | ||
mItemClickHelper.attachToRecyclerView(recyclerView); | ||
} | ||
|
||
@Override | ||
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { | ||
super.onDetachedFromRecyclerView(recyclerView); | ||
mItemClickHelper.detach(); | ||
} | ||
|
||
@NonNull | ||
@Override | ||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | ||
return new ViewHolder(LayoutInflater.from(parent.getContext()) | ||
.inflate(R.layout.item_recycler, parent, false)); | ||
} | ||
|
||
@Override | ||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { | ||
mItemClickHelper.bindClickListener(holder.itemView, holder.button); | ||
mItemClickHelper.bindLongClickListener(holder.itemView, holder.button); | ||
|
||
holder.tvText.setText(String.valueOf(position)); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return mSize; | ||
} | ||
|
||
static class ViewHolder extends RecyclerView.ViewHolder { | ||
TextView tvText; | ||
Button button; | ||
|
||
ViewHolder(@NonNull View itemView) { | ||
super(itemView); | ||
|
||
tvText = itemView.findViewById(R.id.tvText); | ||
button = itemView.findViewById(R.id.button); | ||
} | ||
} | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
94 changes: 94 additions & 0 deletions
94
app/src/main/java/com/test/helper/ScrollToPositionHelperActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
package com.test.helper; | ||
|
||
import androidx.annotation.NonNull; | ||
import androidx.appcompat.app.AppCompatActivity; | ||
import androidx.recyclerview.widget.LinearLayoutManager; | ||
import androidx.recyclerview.widget.RecyclerView; | ||
|
||
import android.os.Build; | ||
import android.os.Bundle; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.widget.TextView; | ||
import android.widget.Toast; | ||
|
||
import recyclerview.helper.ScrollToPositionHelper; | ||
|
||
public class ScrollToPositionHelperActivity extends AppCompatActivity { | ||
private ScrollToPositionHelper mScrollToPositionHelper; | ||
|
||
private static final int MAX_POSITION = 99; | ||
private int mPosition = 0; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_scroll_to_position_helper); | ||
|
||
RecyclerView recyclerView = findViewById(R.id.recyclerView); | ||
recyclerView.setLayoutManager(new LinearLayoutManager(this)); | ||
recyclerView.setAdapter(new Adapter(MAX_POSITION + 1)); | ||
|
||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | ||
mScrollToPositionHelper = new ScrollToPositionHelper(recyclerView); | ||
} | ||
} | ||
|
||
public void onClick(View view) { | ||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { | ||
Toast.makeText(this, "Require API Level 16", Toast.LENGTH_SHORT).show(); | ||
return; | ||
} | ||
|
||
mPosition += 5; | ||
|
||
if (mPosition >= MAX_POSITION) { | ||
mPosition = 0; | ||
} | ||
|
||
switch (view.getId()) { | ||
case R.id.btnScrollTo: | ||
mScrollToPositionHelper.scrollToPosition(mPosition); | ||
break; | ||
case R.id.btnSmoothScrollTo: | ||
mScrollToPositionHelper.smoothScrollToPosition(mPosition); | ||
break; | ||
} | ||
} | ||
|
||
private static class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { | ||
private int mSize; | ||
|
||
Adapter(int size) { | ||
mSize = size; | ||
} | ||
|
||
@NonNull | ||
@Override | ||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | ||
return new ViewHolder(LayoutInflater.from(parent.getContext()) | ||
.inflate(android.R.layout.simple_list_item_1, parent, false)); | ||
} | ||
|
||
@Override | ||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { | ||
holder.text1.setText(String.valueOf(position)); | ||
} | ||
|
||
@Override | ||
public int getItemCount() { | ||
return mSize; | ||
} | ||
|
||
static class ViewHolder extends RecyclerView.ViewHolder { | ||
TextView text1; | ||
|
||
ViewHolder(@NonNull View itemView) { | ||
super(itemView); | ||
|
||
text1 = itemView.findViewById(android.R.id.text1); | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.