2017-08-28 10 views
0

私はrecyclerviewに取り組んでいます。最近、アイテムのクリックリスナーを追加しましたが、アイテムをクリックするとアプリケーションが機能しなくなりました。ここでアイテムをクリックしたときにアプリケーションが機能しなくなったのはなぜですか?

は、アダプタクラスである:ここで

public class RVAdapter extends 
RecyclerView.Adapter<RVAdapter.ItemViewHolder> { 

ArrayList<String>itemlist; 
Clicklistener clicklistener=null; 

public void setClicklistener(Clicklistener clicklistener) { 
    this.clicklistener = clicklistener; 
} 

public RVAdapter(ArrayList<String> itemlist) { 
    this.itemlist = itemlist; 
} 

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

    private TextView text; 

    public ItemViewHolder(View itemView) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     text= (TextView) itemView.findViewById(R.id.itemtextView); 
    } 

    @Override 
    public void onClick(View v) { 
     if(clicklistener!=null) 
      clicklistener.itemClicked(v,getAdapterPosition()); 

    } 
} 

@Override 
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false); 
    ItemViewHolder iv=new ItemViewHolder(v); 

    return iv; 
} 

@Override 
public void onBindViewHolder(ItemViewHolder holder, int position) { 
    holder.text.setText(itemlist.get(position)); 
} 


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

} 

はメインクラスです:

public class MainActivity extends AppCompatActivity implements Clicklistener { 

    ArrayList<String> list; 
    RecyclerView recyclerView; 
    RVAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     list=new ArrayList<>(); 

     list.add("ABC"); 
     list.add("DEF"); 
     list.add("GHI"); 
     list.add("JKL"); 
     recyclerView= (RecyclerView) findViewById(R.id.RV); 
     recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
     adapter=new RVAdapter(list); 
     adapter.setClicklistener(this); 
     recyclerView.setAdapter(adapter); 




     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void itemClicked(View view, int position) { 
     Toast.makeText(getBaseContext(),position,Toast.LENGTH_SHORT).show(); 
    } 
} 

およびインターフェイス

public interface Clicklistener { 
    void itemClicked(View view, int position); 
} 
+3

LogCatレスポンスを表示する –

答えて

2

あなたはToast.makeText()int位置を渡すと、それはと考えていますこれはリソースのid値であり、liを見ているメッセージで停止します次のようにしてください: 'idの文字列が見つかりませんでした...'

単にString.valueOf(position)と交換してください。

関連する問題