如何制作溢出后进入下一行的列表视图,并且只有一个项目应该是可选的
Posted
技术标签:
【中文标题】如何制作溢出后进入下一行的列表视图,并且只有一个项目应该是可选的【英文标题】:How to make list view which goes in next line after overflow and only one item should be selectable 【发布时间】:2020-01-11 20:12:42 【问题描述】:我是 android 开发新手,在开发过程中遇到了问题。首先看一下我想做的设计。
https://imgur.com/wja71Fl
在图像中,尺寸列表是从服务器获取并显示的,但在这里我想要的是假设另一个尺寸 11
被给出然后它应该自动移动到下一行。所以我知道这里不能使用回收站视图。现在我如何才能实现这一点,另一点是我如何才能从尺寸集合中只选择一个项目,并且选择另一个尺寸应该取消选择先前选择的尺寸。请为我提供一些实现这两个目标的好方法。
【问题讨论】:
then it should automatically move to next line
搜索FlowLayout
。 only one item is selected ... and selecting other size should de-select previous
使用 RadioButtons
+ RadioGroup
。要使RadioButton
像TextView
一样掠夺,请将其可绘制按钮设置为null
,并为selected
状态的背景创建一个选择器
【参考方案1】:
实现这一观点。您可以将 recyclerview 与 GridLayoutManager
一起使用。在 gridview 中,我们将项目数设置为一行。试试这个代码来实现这个视图。在这段代码中,我使用了带有 gridview 的回收站视图。在这段代码中,我只实现了一项选择检查。
代码
第一个活动
public class FirstActivity extends AppCompatActivity
RecyclerView recycler_view;
GridLayoutManager manager;
static int selectItem=-1;
CustomAdapter customAdapter;
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
initView();
private void initView()
ArrayList<String> list=new ArrayList<>();
list.add("8");
list.add("10");
list.add("11");
list.add("12");
list.add("14");
list.add("16");
list.add("18");
recycler_view=findViewById(R.id.recycler_view);
manager=new GridLayoutManager(this, 5);
recycler_view.setLayoutManager(manager);
customAdapter=new CustomAdapter(this, list);
recycler_view.setAdapter(customAdapter);
自定义适配器
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyHolder>
Context context;
ArrayList<String> dataList;
public CustomAdapter(Context context, ArrayList<String> dataList, )
this.context=context;
this.dataList=dataList;
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i)
View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_custom,viewGroup,false);
MyHolder myHolder=new MyHolder(view);
return myHolder;
@Override
public void onBindViewHolder(@NonNull MyHolder myHolder, final int i)
//check select item position
if(selectItem==i)
myHolder.textView.setTextColor(Color.RED);
else
myHolder.textView.setTextColor(Color.BLACK);
myHolder.textView.setText(dataList.get(i));
myHolder.itemView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
selectItem=i;
notifyDataSetChanged();
);
@Override
public int getItemCount()
return dataList.size();
public class MyHolder extends RecyclerView.ViewHolder
TextView textView;
public MyHolder(@NonNull View itemView)
super(itemView);
textView=itemView.findViewById(R.id.text_tv);
我希望它对你有用,如果有任何查询评论我
【讨论】:
以上是关于如何制作溢出后进入下一行的列表视图,并且只有一个项目应该是可选的的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 中使整个列表行成为 NavigationLink