我想以编程方式单击recyclerView中的项目,我找到了一种方法:
recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick();
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用,findViewHolderForAdapterPosition只返回null.
我在代码中遗漏了什么吗?
HistoryListAdapter:
public class HistoryListAdapter extends RecyclerView.Adapter<HistoryListAdapter.ViewHolder> {
private static ArrayList<RecordItem> recordItems;
private static FragmentActivity activity;
private static RecordList recordList;
public HistoryListAdapter(ArrayList<RecordItem> recordItems, FragmentActivity FA, RecordList FRL) {
this.recordItems = recordItems;
this.activity = FA;
this.recordList = FRL;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recorditem, parent, false);
return new ViewHolder(itemLayoutView);
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
// TextView …Run Code Online (Sandbox Code Playgroud) 两天我一直在努力解决这个问题但仍然无法找到解决方案,我认为我对OOP的基本知识很差.
现在我宣布大约二十TextView,我想知道有没有办法存储TextView到一个数组,findViewById他们?
我试图使用一个数组,像这样:
public class MainActivity extends Activity {
private TextView name, address;
LinkedHashMap<Integer, TextView> demo = new LinkedHashMap<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int temp;
allTextview = new TextView[]{name, address};
for(int i=0; i<allTextview.length; i++){
temp = getResources().getIdentifier(allTextview[i], "id", getPackageName());
allTextview[i] = (TextView)findViewById(temp);
}
}}
Run Code Online (Sandbox Code Playgroud)
此方法导致"name"和"allTextview [0]"不指向同一对象.我也使用这个解决方案,但仍然是一样的.
我认为原因是"名称"和"地址"刚刚宣布,并没有指向任何对象,我该如何解决?
我想用循环来findViewById,我可以使用"name"和"allTextview [0]"来做某事TextView.
谢谢你的帮助,请原谅我可怜的英语.