私はデータベースからデータを取り出し、cardViewを作成するコードをいくつか作成しました。 cardViewの行には、カードがクリックされたときに有効にしてビューを展開するための、隠れた(消えた)textViewがあります。 これは問題なく動作しているようですが、何らかの理由でアイテム1だけでなく、別のアイテムも展開しています。ここでRecycleview複数のitermsを展開する
は私のアダプタが
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.blackout.kfzquiz.model.Product;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Sundown on 01/10/2016.
*/
public class MyAdapter2 extends RecyclerView.Adapter<MyAdapter2.ViewHolder> {
private String[] kennzeichen_array;
private String[] stadt_array;
private int length;
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a view holder
public static class ViewHolder extends RecyclerView.ViewHolder{
//each data item is just a string in this case
public TextView kennzeichen;
public TextView hiddenTextView;
public ViewHolder(View v){
super(v);
kennzeichen = (TextView) v.findViewById(R.id.tv);
hiddenTextView = (TextView) v.findViewById(R.id.textView8);
}
}
// Provide a suitable constructor (depends on the kind of dataset)
public MyAdapter2(List<Product> myItems){
length = myItems.size();
String[] mStrings = new String[myItems.size()];
String[] stadtStrings = new String[myItems.size()];
for(int i=0;i<myItems.size();i++) {
mStrings[i] = myItems.get(i).getkfz();
stadtStrings[i] = myItems.get(i).getStadt();
}
kennzeichen_array = mStrings;
stadt_array = stadtStrings;
}
// Create new views (invoked by the layout manager)
@Override
public MyAdapter2.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
LayoutInflater inflater = LayoutInflater.from(
parent.getContext());
View v =
inflater.inflate(R.layout.my_text_view, parent, false);
// set the view's size, margins, paddings and layout parameters
MyAdapter2.ViewHolder vh = new MyAdapter2.ViewHolder(v);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(final MyAdapter2.ViewHolder holder, final int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
holder.kennzeichen.setText(kennzeichen_array[position]);
holder.hiddenTextView.setText(stadt_array[position]);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Clicked", String.valueOf(holder.getAdapterPosition()));
if (holder.hiddenTextView.getVisibility() == View.VISIBLE){
holder.hiddenTextView.setVisibility(View.GONE);
}
else{
holder.hiddenTextView.setVisibility(View.VISIBLE);
}
}
});
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return length;
}
}
そして、いくつかのスクリーンショット事前に
おかげ
Genius mate、迅速かつ有益な答えに感謝します!そのようにすることについても考えなかった。まっすぐに見える。 – T1M