实际上,我有一个菜单,可以从中添加回收站中的MainActivity按钮。在该菜单中,我将显示所有已添加的按钮,以便人们可以删除所选的按钮。
但是我有4个该recyclerView的第一项,它们应该是默认的,所以没有人可以触摸它们。要进行管理,我做出的决定是,如果滑动位置等于0到3,则我什么也不做,但是我将其隐藏该recyclerView并仅显示添加的项目。
就像在该图上看到的那样,第一个是我的MainActivity,其中包含4个默认项目,在它们上方,我正在显示添加的项目,而第二个是我的SettingsActivity,在其中添加其他项目,但现在它显示了甚至是我会隐藏的默认值。
答案 0 :(得分:1)
解决此问题的一种方法是操纵后备数组,以使newg
根本不了解丢失的视图。第二种方法是将零高度的其他视图类型分配给那些丢失的位置。一种用于可见位置,另一种用于不可见位置。以下是实现此概念的示例适配器:
RecyclerViewAdapter.java
RecyclerView
我会发布一个视频,但它只会显示从项目#4开始的class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<String> mItems;
RecyclerViewAdapter(List<String> items) {
mItems = items;
}
@Override
public @NonNull
RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
if (viewType == INVISIBLE_ITEM_TYPE) {
// The type is invisible, so just create a zero-height Space widget to hold the position.
view = new Space(parent.getContext());
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0));
} else {
view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
}
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ItemViewHolder vh = (ItemViewHolder) holder;
String itemText = mItems.get(position);
if (vh.getItemViewType() == VISIBLE_ITEM_TYPE) {
// Only populate if a visible type.
vh.mItemTextView.setText(itemText);
int bgColor = (position % 2 == 0)
? android.R.color.holo_blue_light
: android.R.color.holo_green_light;
holder.itemView.setBackgroundColor(
holder.itemView.getContext().getResources().getColor(bgColor));
}
}
@Override
public int getItemCount() {
return (mItems == null) ? 0 : mItems.size();
}
@Override
public int getItemViewType(int position) {
// First 4 position don't show. The visibility of a position can be separately
// determined if only, say, the first and third position should be invisible.
return (position < 4) ? INVISIBLE_ITEM_TYPE : VISIBLE_ITEM_TYPE;
}
static class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView mItemTextView;
ItemViewHolder(View item) {
super(item);
mItemTextView = item.findViewById(android.R.id.text1);
}
}
private final static int VISIBLE_ITEM_TYPE = 1;
private final static int INVISIBLE_ITEM_TYPE = 2;
}
。
答案 1 :(得分:0)
就我对问题陈述的理解水平而言,您可以使用适配器类onBindViewHolder
内的以下代码隐藏前4个项目。
rootView
将是xml
中回收者视图项目的父视图。
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
if (position <= 3) {
holder.rootView.setVisiblity(GONE);
}
else {
holder.rootView.setVisiblity(VISIBLE);
}
}
答案 2 :(得分:0)
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class docfile {
public static void main(String[] args)
{
String readLine;
ArrayList<String>str=new ArrayList<>(String);
try {
File file = new File("text.txt");
BufferedReader b = new BufferedReader(new FileReader(file));
while ((readLine = b.readLine()) != null) {
str.add()=readLine.split(" ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}