활동에 recyclerview가있는 앱을 만들고 있습니다. 목록에있는 항목을 클릭하면 축배를 얻으려고합니다. StackOverflow에서 다양한 솔루션을 보았지만 도움이되지 않습니다.토스트 내부 onclick recyclerview
BasicsAdapter.java
public class BasicsAdapter extends RecyclerView.Adapter<BasicsAdapter.MyViewHolder> {
private List<Basic> basicsList;
public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView title;
public MyViewHolder(View view){
super(view);
title = (TextView)view.findViewById(R.id.title);
}
@Override
public void onClick(View v) {
}
}
public BasicsAdapter(List<Basic> basicsList){
this.basicsList = basicsList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.basic_list_row, parent, false);
itemView.setClickable(true);
itemView.setOnClickListener(true);
//itemView.setFocusableInTouchMode(true); //dont enable this
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Basic basic = basicsList.get(position);
holder.title.setText(basic.getTitle());
}
@Override
public int getItemCount() {
return basicsList.size();
}
}
basics_list.java
public class basics_list extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
private List<Basic> basicList = new ArrayList<>();
private RecyclerView recyclerView;
private BasicsAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.basics_list_name);
setContentView(R.layout.activity_basics_list);
// Adding Toolbar to Main screen
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
/*ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager); */
// set recycler view
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mAdapter = new BasicsAdapter(basicList);
final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);
prepareBasicsData();
// Create Navigation drawer and inflate layout
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
// Adding menu icon to Toolbar
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
// Set behavior of Navigation drawer
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
// Set item in checked state
menuItem.setChecked(true);
// TODO: handle navigation
// Closing drawer on item click
mDrawerLayout.closeDrawers();
return true;
}
});
}
private void prepareBasicsData() {
Basic basic = new Basic("Introduction to Linux");
basicList.add(basic);
basic = new Basic("What is The Terminal");
basicList.add(basic);
basic = new Basic("Programmers guide");
basicList.add(basic);
mAdapter.notifyDataSetChanged();
}
}
어디 토스트 메시지가 코드에? –
나는 그것을 제거했다. 제가 시도한 것은 없습니다. getApplicationContext 또는 getBaseContext가 유효하지 않습니다. "this"가 포함 된 액티비티를 사용하지 못했습니다. –
클래스의 생성자 중 하나로서'Context'를 추가하면 액티비티에서 클래스를 초기화 할 때 "this"를 전달하면 컨텍스트가 생깁니다. –