2016-04-06 9 views
2

'u kullanarak programlı olarak yöntemi tıklatıp arama işlevi arıyorum. bu yüzden bir yöntem buldum. 'PerformClick()' böyleRecyclerViewProgramı tıklatarak tıklayın -

:

recyclerView.findViewHolderForAdapterPosition(position).itemView.performClick(); 

ama benim durumumda çalışmalarını kaplamaz. Çözüm bulamıyorum. ActivityClick eylemini nasıl kullanırım ???

benim Adaptör - ViewHolder:

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    private TextView virtNo; 
    private TextView score01; 
    private TextView score02; 
    private TextView score03; 
    private TextView totalScore; 
    private LinearLayout linearLayout; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     this.virtNo = (TextView) itemView.findViewById(R.id.tv_virtNo); 
     this.score01 = (TextView) itemView.findViewById(R.id.tv_score01); 
     this.score02 = (TextView) itemView.findViewById(R.id.tv_score02); 
     this.score03 = (TextView) itemView.findViewById(R.id.tv_score03); 
     this.totalScore = (TextView) itemView.findViewById(R.id.tv_totalScore); 
     this.linearLayout = (LinearLayout) itemView.findViewById(R.id.ll_item_score); 

     virtNo.setOnClickListener(this); 
     score01.setOnClickListener(this); 
     score02.setOnClickListener(this); 
     score03.setOnClickListener(this); 
     score10.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     onClickListener.onClick(v, getAdapterPosition(), items.get(getAdapterPosition())); 
    } 
} 

public void setOnClickListener(OnClickListener<Score> onClickListener) { 
    this.onClickListener = onClickListener; 
} 

public interface OnClickListener<T> { 
    void onClick(View v, int position, T item); 
} 

benim Adaptör - Burada anlaşılması kolay tutmak için çalıştık

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Score item = items.get(position); 
    holder.virtNo.setText(item.virtNo); 
    holder.score01.setText(item.score01); 
    holder.score02.setText(item.score02); 
    holder.score03.setText(item.score03); 
    holder.totalScore.setText(itemSum(item)); 
    } 
} 
+0

de mevcuttur, ama ... biraz garip bir yol ... neyse, ben ... çok zor bir hayat çözüldü ... –

+0

Bunu nasıl çözdünüz? Ben bilmek için çok hevesliyim. –

+0

@AliNfr Çok iyi ingilizce yazamam, bu yüzden size açıklayamam. çok özür dilerim ... ve şimdi benim kodumu anlamıyorum .. ㅠㅠ çok üzgünüm ... –

cevap

1

onBindViewHolder, bireysel etkinliği tıklayın dinlemek için tam bir örnektir RecyclerView'daki öğeler, bunu yapmanın başka yolları da vardır. Bu kod çalışır, herhangi bir sorunuz varsa, bunları yorum olarak yazdığınızda, size uyacak şekilde değiştirebilirsiniz. Kod GitHub

public class RecyclerViewOneActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_recycler_view_one); 
     initializeUI(); 
    } 

    private void initializeUI() { 
     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.RecyclerViewOneActivity_RecyclerView); 
     RecyclerView.LayoutManager linearLayoutManager = new LinearLayoutManager(this); 
     recyclerView.setLayoutManager(linearLayoutManager); 
     ArrayList<String> strings = new ArrayList<>(); 
     strings.add("first"); 
     strings.add("second"); 
     MyAdapter adapter = new MyAdapter(getApplicationContext(), strings); 
     recyclerView.setAdapter(adapter); 

    } 

    private class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 

     private Context context; 
     private ArrayList<String> strings; 
     private LayoutInflater layoutInflater; 

     public MyAdapter(Context context, ArrayList<String> strings) { 
      this.context = context; 
      this.strings = strings; 
      layoutInflater = LayoutInflater.from(this.context); 
     } 

     @Override 
     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = layoutInflater.inflate(R.layout.single_item_recycler_view_one, parent, false); 
      MyViewHolder myViewHolder = new MyViewHolder(view); 
      return myViewHolder; 
     } 

     @Override 
     public void onBindViewHolder(MyViewHolder holder, int position) { 
      final String text = this.strings.get(position); 
      holder.textView.setText("" + text); 
      holder.linearLayout.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(context, ""+text, Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 

     @Override 
     public int getItemCount() { 
      return strings.size(); 
     } 

     class MyViewHolder extends RecyclerView.ViewHolder { 
      private LinearLayout linearLayout; 
      private TextView textView; 

      public MyViewHolder(View itemView) { 
       super(itemView); 
       linearLayout = (LinearLayout) itemView.findViewById(R.id.single_item_recycler_view_one_linear_layout); 
       textView = (TextView) itemView.findViewById(R.id.single_item_recycler_view_one_textView); 
      } 
     } 
    } 
} 

single_item_recycler_view_one.xml benim sorun çözüldü

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="8dp" 
    android:id="@+id/single_item_recycler_view_one_linear_layout" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/single_item_recycler_view_one_textView" 
     android:layout_width="match_parent" 
     android:textColor="#000" 
     android:layout_height="wrap_content" 
     android:text="Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
</LinearLayout> 
+0

teşekkürler Pankaj Nimgade, deneyeceğim –

İlgili konular