【发布时间】:2017-05-20 13:16:14
【问题描述】:
我正在制作一个应用程序,其中一个活动显示一个回收站视图。单击列表中的项目时,我正在尝试敬酒。我已经在 StackOverflow 上看到了各种解决方案,但它们没有帮助。
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();
}
}
【问题讨论】:
-
您的 Toast 消息在您的代码中的什么位置?
-
我删除了它。我试过的都没有。 getApplicationContext 或 getBaseContext 无效。将活动与“this”一起使用无效
-
只需将
Context添加为类的构造函数之一,当您从 Activity 初始化类时,传递“this”即可获得上下文。 -
@AndroidNFC 是的,在我的answer中已经提到过。
-
@creativecreatorormaybenot 在这样的问题上,如果没有明确区分用户实际查询的内容,我会在 cmets 中回答可能性,以避免不属于实际问题的答案。可能会在未来几年误导读者。
标签: android android-studio android-recyclerview