Android RecyclerView仿新聞?lì)^條的頻道管理功能
需要在build里添加依賴
compile 'com.android.support:recyclerview-v7:25.3.1'
布局文件activity_main
<android.support.v7.widget.RecyclerView
android:layout_weight="1"
android:id="@+id/recyclerView_up"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
<!--用來(lái)劃分上下的頻道-->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#999999">
</View>
<android.support.v7.widget.RecyclerView
android:layout_weight="1"
android:id="@+id/recyclerView_down"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
在layout下定義一個(gè)message.xml布局文件,用來(lái)顯示RecyclerView里的文字,跟listview的意義差不多
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:padding="3dp"
android:text="123123123" />
寫一個(gè) MyItemOnClickListener 接口用來(lái)監(jiān)聽(tīng)點(diǎn)擊事件,在里邊傳入兩個(gè)參數(shù),第一個(gè)是試圖,第二是點(diǎn)擊的下標(biāo)
public interface MyItemOnClickListener {
void onClick(View view,int position);
}
RecyclerView的適配器類
//RecyclerView.Adapter<?>里寫的是優(yōu)化繼承ViewHolder的幫助類
public class ViewAdapter extends RecyclerView.Adapter<ViewAdapter.MyViewHolder> {
private Context mContext;
/**
*特別注意一下mList后面一定要默認(rèn)賦值,不然運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)槲覀兡J(rèn)上面的RecyclerView是沒(méi)有添加數(shù)據(jù)的
*/
private List<String> mList=new ArrayList<>();
private MyItemOnClickListener myItemOnClickListener;
public ViewAdapter(Context context) {
this.mContext = context;
}
//傳數(shù)組的方法
public void setMessage(List<String> list) {
this.mList = list;
}
//寫個(gè)方法把接口傳過(guò)來(lái)
public void setMyItemOnClickListener(MyItemOnClickListener myItemOnClickListener)
{
this.myItemOnClickListener = myItemOnClickListener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//打氣筒填充我們自定義的message.xml的試圖
View view = View.inflate(mContext, R.layout.messgae, null);
//優(yōu)化
final MyViewHolder holder = new MyViewHolder(view);
//監(jiān)聽(tīng)
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//調(diào)用我們自定義接口的方法
myItemOnClickListener.onClick(v, holder.getLayoutPosition());
}
});
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
MyViewHolder viewHolder = holder;
viewHolder.textView.setText(mList.get(position));
}
@Override
public int getItemCount() {
return mList.size();
}
//ViewHolder優(yōu)化
static class MyViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public MyViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.textView);
}
}
}
在MainActivity的實(shí)現(xiàn)
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView_up;
private RecyclerView recyclerView_down;
private List<String> listUp = new ArrayList<>();
private List<String> listDown = new ArrayList<>();
private ViewAdapter adapterUp;
private ViewAdapter adapterDown;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//添加數(shù)據(jù)
initData();
initView();
}
//添加數(shù)據(jù)
for (int i = 0; i < 15; i++) {
//默認(rèn)的我們只給下面的RecyclerView添加了數(shù)據(jù)
listDown.add("頻道管理" + i);
}
}
private void initView() {
recyclerView_up = (RecyclerView) findViewById(R.id.recyclerView_up);
recyclerView_down = (RecyclerView) findViewById(R.id.recyclerView_down);
initUp();
initDown();
}
private void initUp() {
//創(chuàng)建適配器
adapterUp = new ViewAdapter(MainActivity.this);
//添加數(shù)據(jù),我們默認(rèn)創(chuàng)建的時(shí)候是空的
adapterUp.setMessage(listUp);
recyclerView_up.setAdapter(adapterUp);
//RecyclerView顯示樣式
GridLayoutManager gridLayoutManagerUp = new GridLayoutManager(this, 3);
recyclerView_up.setLayoutManager(gridLayoutManagerUp);
//點(diǎn)擊監(jiān)聽(tīng)
adapterUp.setMyItemOnClickListener(new MyItemOnClickListener() {
@Override
public void onClick(View view, int position) {
Log.e("Up", "上" + position);
//下面的RecyclerView添加當(dāng)前點(diǎn)擊的條目信息并刷新數(shù)組
listDown.add(listUp.get(position));
adapterDown.setMessage(listDown);
adapterDown.notifyDataSetChanged();
//從當(dāng)前數(shù)組移除數(shù)據(jù)并刷新數(shù)組
listUp.remove(position);
adapterUp.setMessage(listUp);
adapterUp.notifyDataSetChanged();
}
});
}
private void initDown() {
adapterDown = new ViewAdapter(MainActivity.this);
adapterDown.setMessage(listDown);
recyclerView_down.setAdapter(adapterDown);
GridLayoutManager gridLayoutManagerDown = new GridLayoutManager(this, 3);
recyclerView_down.setLayoutManager(gridLayoutManagerDown);
adapterDown.setMyItemOnClickListener(new MyItemOnClickListener() {
@Override
public void onClick(View view, int position) {
Log.e("Down", "下" + position);
//下面的RecyclerView添加當(dāng)前點(diǎn)擊的條目信息并刷新數(shù)組
listUp.add(listDown.get(position));
adapterUp.setMessage(listUp);
adapterUp.notifyDataSetChanged();
//從當(dāng)前數(shù)組移除數(shù)據(jù)并刷新數(shù)組
listDown.remove(position);
adapterDown.setMessage(listDown);
adapterDown.notifyDataSetChanged();
}
});
}
}
以上所述是小編給大家介紹的Android RecyclerView仿新聞?lì)^條的頻道管理功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android實(shí)現(xiàn)雅虎新聞?wù)虞d視差動(dòng)畫效果
- Android仿網(wǎng)易新聞圖片詳情下滑隱藏效果示例代碼
- Android開(kāi)發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能實(shí)例
- Android UI設(shè)計(jì)與開(kāi)發(fā)之PopupWindow仿騰訊新聞底部彈出菜單
- Android網(wǎng)絡(luò)編程之簡(jiǎn)易新聞客戶端
- Android模擬實(shí)現(xiàn)網(wǎng)易新聞客戶端
- Android 模擬新聞APP顯示界面滑動(dòng)優(yōu)化實(shí)例代碼
- Android實(shí)現(xiàn)基本功能的新聞應(yīng)用
相關(guān)文章
android實(shí)現(xiàn)短按電源鍵關(guān)機(jī)的實(shí)現(xiàn)代碼
這篇文章主要介紹了android實(shí)現(xiàn)短按電源鍵關(guān)機(jī)的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Android中常見(jiàn)內(nèi)存泄漏的場(chǎng)景和解決方案詳解
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)中常見(jiàn)內(nèi)存泄漏場(chǎng)景及其解決方案,內(nèi)容包括代碼示例、原因分析以及最佳實(shí)踐建議,希望對(duì)大家有所幫助2024-11-11
Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自動(dòng)填充短信驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Android實(shí)現(xiàn)SwipeRefreshLayout首次進(jìn)入自動(dòng)刷新
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)SwipeRefreshLayout首次進(jìn)入自動(dòng)刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android7.0以上Uri轉(zhuǎn)路徑的方法實(shí)現(xiàn)(已驗(yàn)證)
這篇文章主要介紹了Android7.0以上Uri轉(zhuǎn)路徑的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Android利用ObjectAnimator實(shí)現(xiàn)ArcMenu
這篇文章主要為大家詳細(xì)介紹了Android利用ObjectAnimator實(shí)現(xiàn)ArcMenu的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07
Android自定義控件實(shí)現(xiàn)icon+文字的多種效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)icon+文字的多種效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Android學(xué)習(xí)筆記之ListView復(fù)用機(jī)制詳解
本篇文章主要介紹了Android學(xué)習(xí)筆記之ListView復(fù)用機(jī)制詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Android實(shí)現(xiàn)圓圈倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圓圈倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

