Ehi、私はインターネット上で見つけたサンプルアプリケーションを改造しています。 (learn2crack) ReclycerViewで1行のIDを取得したいとします。ここにコードがあります。RecyclerView単一アイテムID
メイン
private void initViews(){
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
ArrayList<AndroidVersion> androidVersions = prepareData();
DataAdapter adapter = new DataAdapter(getApplicationContext(),androidVersions);
recyclerView.setAdapter(adapter);
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener(){
@Override
public void onTouchEvent(RecyclerView recycler, MotionEvent event) {
Toast.makeText(getApplicationContext(),"Here i need the ID of the clicked row",Toast.LENGTH_SHORT).show();
}
@Override
public boolean onInterceptTouchEvent(RecyclerView recycler, MotionEvent event) {
return true;
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean a){
}
});
}
private ArrayList<AndroidVersion> prepareData(){
ArrayList<AndroidVersion> android_version = new ArrayList<>();
for(int i=0;i<android_version_names.length;i++){
AndroidVersion androidVersion = new AndroidVersion();
androidVersion.setAndroid_version_name(android_version_names[i]);
androidVersion.setAndroid_image_url(android_image_urls[i]);
android_version.add(androidVersion);
}
return android_version;
}
アダプタ
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<AndroidVersion> android_versions;
private Context context;
public DataAdapter(Context context,ArrayList<AndroidVersion> android_versions) {
this.context = context;
this.android_versions = android_versions;
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int i) {
viewHolder.tv_android.setText(android_versions.get(i).getAndroid_version_name());
Picasso.with(context).load(android_versions.get(i).getAndroid_image_url()).resize(120, 60).into(viewHolder.img_android);
viewHolder.tv_android.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View argi) {
//Toast.makeText(context,String.valueOf(i),Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
return android_versions.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView tv_android;
ImageView img_android;
public ViewHolder(View view) {
super(view);
tv_android = (TextView)view.findViewById(R.id.tv_android);
img_android = (ImageView)view.findViewById(R.id.img_android);
}
}
あなたが見ることができるように、私はいくつかの変更をしました。私が実装しようとしているbeahviourはこれです: ReclyclerViewボタンの1つをクリックすると、その "id"(同じことを私がアダプタで使用した、これがコメントの背後にあります)を印刷します。 ロードします。すべてのクリック/カテゴリごとに別のリサイクル・ビューがありますので、スイッチケースが必要になりますが、リサイクル・ビューからすべてのIDを取得する必要があります。 「アダプター・バージョン」を使用すると、 "、" 2 "などがありますが、私はメインで作業する必要があるので、InitViews()をもう一度呼び出すか、その修正版を呼び出すことができます int id1 = recycleritem.getid (); 何かアイデア? ありがとうございます。
サンプルを投稿できますか?またはリンク? ありがとう アクティビティを呼び戻す方法がわかりません –
これを試してみます。ありがとう:) ...私はMainActivity、右で宣言された関数を呼び出すことはできませんか? –
インターフェイスをアダプタに渡すことで行います。 – Kuffs