国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android RecyclerView仿新聞頭條的頻道管理功能

2019-10-23 18:27:25
字體:
來源:轉載
供稿:網友

需要在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>  <!--用來劃分上下的頻道-->  <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下定義一個message.xml布局文件,用來顯示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" />

寫一個 MyItemOnClickListener 接口用來監聽點擊事件,在里邊傳入兩個參數,第一個是試圖,第二是點擊的下標

public interface MyItemOnClickListener {  void onClick(View view,int position);}

RecyclerView的適配器類

//RecyclerView.Adapter<?>里寫的是優化繼承ViewHolder的幫助類public class ViewAdapter extends RecyclerView.Adapter<ViewAdapter.MyViewHolder> {  private Context mContext;  /**  *特別注意一下mList后面一定要默認賦值,不然運行的時候會報錯,因為我們默認上面的RecyclerView是沒有添加數據的   */  private List<String> mList=new ArrayList<>();  private MyItemOnClickListener myItemOnClickListener;  public ViewAdapter(Context context) {    this.mContext = context;  }  //傳數組的方法  public void setMessage(List<String> list) {    this.mList = list;  }  //寫個方法把接口傳過來  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);    //優化    final MyViewHolder holder = new MyViewHolder(view);    //監聽    view.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        //調用我們自定義接口的方法        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優化  static class MyViewHolder extends RecyclerView.ViewHolder {    private TextView textView;    public MyViewHolder(View itemView) {      super(itemView);      textView = (TextView) itemView.findViewById(R.id.textView);    }  }}

在MainActivity的實現

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);    //添加數據    initData();    initView();  }  //添加數據    for (int i = 0; i < 15; i++) {    //默認的我們只給下面的RecyclerView添加了數據      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() {    //創建適配器    adapterUp = new ViewAdapter(MainActivity.this);    //添加數據,我們默認創建的時候是空的    adapterUp.setMessage(listUp);    recyclerView_up.setAdapter(adapterUp);    //RecyclerView顯示樣式    GridLayoutManager gridLayoutManagerUp = new GridLayoutManager(this, 3);    recyclerView_up.setLayoutManager(gridLayoutManagerUp);    //點擊監聽    adapterUp.setMyItemOnClickListener(new MyItemOnClickListener() {      @Override      public void onClick(View view, int position) {        Log.e("Up", "上" + position);        //下面的RecyclerView添加當前點擊的條目信息并刷新數組        listDown.add(listUp.get(position));        adapterDown.setMessage(listDown);        adapterDown.notifyDataSetChanged();        //從當前數組移除數據并刷新數組        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添加當前點擊的條目信息并刷新數組        listUp.add(listDown.get(position));        adapterUp.setMessage(listUp);        adapterUp.notifyDataSetChanged();        //從當前數組移除數據并刷新數組        listDown.remove(position);        adapterDown.setMessage(listDown);        adapterDown.notifyDataSetChanged();      }    });  }}

以上所述是小編給大家介紹的Android RecyclerView仿新聞頭條的頻道管理功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河津市| 密云县| 东丰县| 祁连县| 东辽县| 哈巴河县| 淮北市| 开封县| 金坛市| 偃师市| 利川市| 会宁县| 西乌| 抚顺县| 汾西县| 共和县| 集安市| 平果县| 卢龙县| 潜山县| 石嘴山市| 汉寿县| 黔江区| 阿克苏市| 商丘市| 丹阳市| 土默特右旗| 苍南县| 分宜县| 招远市| 库车县| 道孚县| 青川县| 应城市| 石家庄市| 金门县| 宝兴县| 永登县| 藁城市| 新疆| 油尖旺区|