HashMap实现单选(HansMap的遍历)
生活随笔
收集整理的這篇文章主要介紹了
HashMap实现单选(HansMap的遍历)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
推薦:
- HashSet實(shí)現(xiàn)多選
- HashMap實(shí)現(xiàn)單選(HansMap的遍歷)
HashMap實(shí)現(xiàn)單選(HansMap的遍歷),先看效果圖:
這是HashMap實(shí)現(xiàn)單選和HashSet實(shí)現(xiàn)多選的下載鏈接
下面是主要內(nèi)容:
- MainActivity 主要代碼以及 activity_main 布局文件代碼
- OneAdapter 主要代碼以及 adapter_one 布局文件代碼
1.?MainActivity 主要代碼以及 activity_main 布局文件代碼
MainActivity 代碼:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.Toast;import java.util.ArrayList; import java.util.List;/*** author: wu* date: on 2018/11/12.* describe:單選主 Activity*/ public class MainActivity extends AppCompatActivity {private List<String> list;private RecyclerView rv_one;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//列表中添加數(shù)據(jù)setList();//設(shè)置單選適配器setOne();}private void setList() {list = new ArrayList<>();list.add("英雄聯(lián)盟");list.add("王者榮耀");list.add("刺激戰(zhàn)場(chǎng)");list.add("絕地求生");list.add("第五人格");list.add("唱歌");list.add("聊天");list.add("全軍出擊");}private void setOne() {rv_one = findViewById(R.id.rv_one);OneAdapter adapter = new OneAdapter(this, list);rv_one.setAdapter(adapter);rv_one.setLayoutManager(new GridLayoutManager(this, 3));//adapter中item點(diǎn)擊事件adapter.setOnItemClickListerer(new OneAdapter.OnItemClickListener() {@Overridepublic void onItemClick(int position, String name) {Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();}});} }activity_main 代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="40dp"android:background="@color/colorPrimary"android:gravity="center"android:text="HashMap實(shí)現(xiàn)單選" /><android.support.v7.widget.RecyclerViewandroid:id="@+id/rv_one"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>2. OneAdapter 主要代碼以及 adapter_one 布局文件代碼
OneAdapter 代碼:
import android.content.Context; import android.graphics.Color; 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.HashMap; import java.util.List;/*** author: wu* date: on 2018/11/12.* describe:單選適配器*/public class OneAdapter extends RecyclerView.Adapter<OneAdapter.GoodsListHolder> {private final LayoutInflater mInflater;private Context context;private List<String> list;//存儲(chǔ)對(duì)號(hào)private HashMap<Integer, TextView> hashMapCheck = new HashMap<>();//存儲(chǔ)名稱(chēng)private HashMap<Integer, TextView> hashMapName = new HashMap<>();public OneAdapter(Context mContext, List<String> list) {this.context = mContext;this.list = list;mInflater = LayoutInflater.from(context);}//接口回調(diào)public interface OnItemClickListener {void onItemClick(int position, String name);}public OneAdapter.OnItemClickListener mOnItemClickListerer;public void setOnItemClickListerer(OneAdapter.OnItemClickListener listerer) {this.mOnItemClickListerer = listerer;}@Overridepublic int getItemCount() {return list != null ? list.size() : 0;}@Overridepublic void onBindViewHolder(final GoodsListHolder holder, final int position) {holder.tv_name.setText(list.get(position));//設(shè)置顯示名稱(chēng)hashMapCheck.put(position, holder.tv_check);//存儲(chǔ)對(duì)號(hào)hashMapName.put(position, holder.tv_name);//存儲(chǔ)名稱(chēng)//默認(rèn)選中第一項(xiàng)if (position == 0) {holder.tv_check.setVisibility(View.VISIBLE);holder.tv_name.setTextColor(Color.parseColor("#FF3300"));} else {holder.tv_check.setVisibility(View.GONE);holder.tv_name.setTextColor(Color.parseColor("#FF666666"));}//item點(diǎn)擊事件holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//遍歷對(duì)號(hào)全都隱藏for (HashMap.Entry<Integer, TextView> entry : hashMapCheck.entrySet()) {entry.getValue().setVisibility(View.GONE);}//遍歷名稱(chēng)設(shè)置為黑色for (HashMap.Entry<Integer, TextView> entry : hashMapName.entrySet()) {entry.getValue().setTextColor(Color.parseColor("#FF666666"));}//設(shè)置選中的對(duì)號(hào)顯示,和名稱(chēng)字體顏色holder.tv_check.setVisibility(View.VISIBLE);holder.tv_name.setTextColor(Color.parseColor("#FF3300"));//點(diǎn)擊回調(diào)mOnItemClickListerer.onItemClick(position, list.get(position));}});}@Overridepublic GoodsListHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = mInflater.inflate(R.layout.adapter_one, parent, false);GoodsListHolder viewHolder = new GoodsListHolder(view);return viewHolder;}class GoodsListHolder extends RecyclerView.ViewHolder {TextView tv_check, tv_name;public GoodsListHolder(View itemView) {super(itemView);tv_name = itemView.findViewById(R.id.tv_name);tv_check = itemView.findViewById(R.id.tv_check);}} }adapter_one 代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="35dp"android:layout_margin="10dp"android:layout_weight="1"android:gravity="center"android:orientation="horizontal"android:background="#FFEEEEEE"><TextViewandroid:id="@+id/tv_check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="√"android:textColor="#FF3300"android:textSize="12sp"android:visibility="gone"/><TextViewandroid:id="@+id/tv_name"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginLeft="2dp"android:gravity="center"android:text="不限"android:textColor="#FF666666"android:textSize="12sp" /> </LinearLayout>這樣便可以用 HashMap 實(shí)現(xiàn)多選。
推薦:
- HashSet實(shí)現(xiàn)多選
- HashMap實(shí)現(xiàn)單選(HansMap的遍歷)
總結(jié)
以上是生活随笔為你收集整理的HashMap实现单选(HansMap的遍历)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flutter开发(十二):Flutte
- 下一篇: 从 Option Explicit 开始