我正在关注本教程https://inducesmile.com/android/android-recyclerview-and-cardview-in-material-design-tutorial/
我以前的应用程序文件具有此功能,因此微调框由csv文件填充。现在,我只是制作另一个应用程序文件,因为我想使用cardviews和recyclerview重新开始。
但是,在尝试使用回收者视图和卡片视图将以前的微调器代码实现到此新应用程序文件时遇到了一些麻烦。
上面链接的Example调用了一个名为ItemObject.java的类。我假设这是我放置读取csv的代码的地方。
ItemObject类
public class ItemObject {
Spinner spinner;
public void setText(String spinner) {
private Map<String, String> numberItemValues = new HashMap<>();
private class CSVFile {
InputStream inputStream;
public CSVFile(InputStream inputStream) {
this.inputStream = inputStream;
}
public List<String> read() {
List<String> resultList = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String line;
while ((line = reader.readLine()) != null) {
String[] row = line.split(",");
//TODO I edited this part so that you'd add the values in our new hash map variable
numberItemValues.put(row[1], row[0]);
resultList.add(row[1]);
}
} catch (IOException e) {
Log.e("Main", e.getMessage());
} finally {
try {
inputStream.close();
} catch (IOException e) {
Log.e("Main", e.getMessage());
}
}
return resultList;
}
}
}
}
然后该示例要求使用RecyclerViewAdatper。 我对放在OnBindViewHolder部分中的内容感到困惑。该放在微调器中怎么办?
RecyclerViewAdapter类
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
private List<ItemObject> itemList;
private Context context;
public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
this.itemList = itemList;
this.context = context;
}
@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_products, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
return rcv;
}
@Override
public void onBindViewHolder(RecyclerViewHolders holder, int position) {
// **WHAT TO PUT HERE**
//holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
}
@Override
public int getItemCount() {
return this.itemList.size();
}
}
这是RecyclerViewHolders类,仅供任何人参考。
public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView countryName;
public ImageView countryPhoto;
public Spinner spinner;
public TextView textView5;
public CheckBox checkBox;
public EditText editText;
public RecyclerViewHolders(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
/* countryName = (TextView)itemView.findViewById(R.id.country_name);
countryPhoto = (ImageView)itemView.findViewById(R.id.country_photo);*/
spinner = (Spinner)itemView.findViewById(R.id.spinner);
textView5 = (TextView)itemView.findViewById(R.id.textView5);
checkBox = (CheckBox)itemView.findViewById(R.id.checkBox);
editText = (EditText)itemView.findViewById(R.id.editText);
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "Clicked Country Position = " + getPosition(), Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:2)
您可以将String数组形式的CSV值传递给recyleview adpater构造函数。您可以使用这些值来填充微调器,例如
String [] spinnerValues;
public RecyclerViewAdapter(Context context, List<ItemObject> itemList, String [] spinnerValues) {
this.itemList = itemList;
this.context = context;
this.spinnerValues = spinnerValues
}
在适配器中使View Holder类成为内部类,并使用以下代码。
spinner = (Spinner)itemView.findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, YOUR_STRING_ARRAY);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);