2015-09-14 142 views
5

這裏是我的整個活動代碼,如果需要我也可以發佈我的xml。無法解析方法setOnChildClickListener

public class Main_Activityextends AppCompatActivity { 
private RecyclerView recyclerview; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    recyclerview = (RecyclerView) findViewById(R.id.recyclerview); 
    recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); 
    List<ExpandableListViewAdapter.Item> data = new ArrayList<>(); 

    data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.HEADER, "Terms of usage")); 
    data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "never eat")); 
    data.add(new ExpandableListViewAdapter.Item(ExpandableListViewAdapter.CHILD, "bluhhhhh")); 

    recyclerview.setAdapter(new ExpandableListViewAdapter(data)); 

    recyclerview.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 
      return true; 
     } 

    }); 

代碼工作完全沒有clickListener,但我想一個動作到陣列的某個孩子點擊時發生,但現在它說Cannot resolve method setOnChildClickListener(anonymous android.widget.ExpendableListView.OnChildClickListener)雖然recycleView是我Adapter,任何幫助將不勝感激

+0

嘗試添加'機器人:descendantFocusability = 「blocksDescendants」'上你的子視圖 –

+0

仍然是相同的結果 –

+0

你有烤麪包什麼的可以知道它不是火嗎? –

回答

2

簡而言之,RecyclerView不支持OnChildClickListener,因爲它不打算成爲一個替代ListView的直接替代品。

有關爲何,請this stackoverflow answer

一個很好的解釋而應該落實View.OnClickListenerViewHolder類,像這樣:

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    // Your view fields here 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 

     // Assign view fields 

     itemLayoutView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     // Do your thing here 
    } 
} 
+0

很抱歉,請問這麼晚了,但現在和你的班級現在怎麼稱呼一個特定的孩子,因爲我還沒有找到任何方式 –

+0

不知道你是什麼意思,「打電話給一個特定的孩子」,但你可以使用' getAdapterPosition()'來查找已被點擊的視圖的索引。 –