2016-12-03 4 views
0

RecyclerViewアダプタ内でメソッドを定義し、MainActivityから呼び出すことはできますが、できません。私を案内してください。メソッドをアダプタ内で定義し、MainActivityから呼び出します

マイMainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    GetDataAdapter1 = new ArrayList<>(); 
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView1); 
    recyclerViewlayoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(recyclerViewlayoutManager); 
    JSON_DATA_WEB_CALL(); 
    recyclerViewadapter = new RecyclerViewAdapter(MainActivity.this, GetDataAdapter1, this); 

    recyclerView.setAdapter(recyclerViewadapter); 
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) {    super.onScrolled(recyclerView, dx, dy); 
      LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager(); 

      int firstVisible = manager.findFirstVisibleItemPosition(); 
      int lastVisible = manager.findLastVisibleItemPosition(); 
      Log.i("TAG", "onScrolled: " + firstVisible); 
      Log.i("TAG", "Last Index: " + lastVisible); 
      recyclerViewadapter.changeItem(firstVisible,lastVisible); 
     } 
    }); 

マイアダプタ

@Override 
public int getItemCount() { 

    return getDataAdapter.size(); 
} 

public void changeItem(int position){ 
    firstVisible = position; 
    notifyItemChanged(firstVisible); 
    notifyDataSetChanged(); 
} 


class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView IdTextView; 
    public TextView NameTextView; 
    public TextView PhoneNumberTextView; 
    public TextView SubjectTextView; 

私はあなたが一つのパラメータを持つ関数を宣言しMainActivity

答えて

0

から呼び出すこのchangeItem:

public void changeItem(int position) 

いますが、2つのパラメータでそれを呼び出す:

firstVisible = position; 
notifyItemChanged(firstVisible); 

firstVisible範囲にありません。私はこれらの行にすることをかなり確信しても

recyclerViewadapter.changeItem(firstVisible,lastVisible); 

。パラメータとスコープの仕組みをお読みください。

+0

HI @ Grisu ,,もし私がMainActivityのadapter.MethodNameをgivinfしているのであれば、Adaper内でメソッドを作成するオプションを表示する必要がありますが、作成することができません。 –

+0

さて、私は少し助けてください。私はMainActivityでScrollListenerを使用しています。私はアダプタで2つのパラメータを定義するだけです: 'method(int param1、int param2)これは、アダプタに2つのパラメータを定義することで、MainActivyt –

+0

にアクセスすることができます。 ' – Grisu47

関連する問題