में विफल है, मैं नीचे क्लिक शीट दृश्य में सूची सामग्री को बदलना चाहता हूं हालांकि ईवेंट पर क्लिक करें, लेकिन मुझे केवल खाली शीट मिल गई है। BottomSheetSample (github.com/niravkalola/BottomSheetSample) से एक डेमो संशोधित किया गया है।अद्यतन रीसाइक्लेव्यू सामग्री नीचे शीट
mainActivity.java
package com.nkdroid.bottomsheetsample;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity implements ItemAdapter.ItemListener {
private Button btnView, btnDialog;
BottomSheetBehavior behavior;
private BottomSheetDialog mBottomSheetDialog;
private ItemAdapter mAdapter;
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnView = (Button) findViewById(R.id.btnView);
btnDialog = (Button) findViewById(R.id.btnDialog);
btnView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter = new ItemAdapter(createItems());
recyclerView.setAdapter(mAdapter);
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
btnDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showBottomSheetDialog();
}
});
View bottomSheet = findViewById(R.id.bottom_sheet);
behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new ItemAdapter(createItems(), this);
recyclerView.setAdapter(mAdapter);
}
private void showBottomSheetDialog() {
if (behavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
mBottomSheetDialog = new BottomSheetDialog(this);
View view = getLayoutInflater().inflate(R.layout.sheet, null);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new ItemAdapter(createItems(), new ItemAdapter.ItemListener() {
@Override
public void onItemClick(Item item) {
if (mBottomSheetDialog != null) {
mBottomSheetDialog.dismiss();
}
}
}));
mBottomSheetDialog.setContentView(view);
mBottomSheetDialog.show();
mBottomSheetDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mBottomSheetDialog = null;
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
mAdapter.setListener(null);
}
public List<Item> createItems() {
Random r = new Random();
ArrayList<Item> items = new ArrayList<>();
items.add(new Item(R.mipmap.ic_launcher, "Item 1"+ r.nextInt(100)));
items.add(new Item(R.mipmap.ic_launcher, "Item 2"));
items.add(new Item(R.mipmap.ic_launcher, "Item 3"));
items.add(new Item(R.mipmap.ic_launcher, "Item 4"));
return items;
}
@Override
public void onItemClick(Item item) {
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
}
ItemAdapter.java: first click :
package com.nkdroid.bottomsheetsample;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
private List<Item> mItems;
private ItemListener mListener;
public ItemAdapter(List<Item> items, ItemListener listener) {
mItems = items;
mListener = listener;
}
public ItemAdapter(List<Item> items) {
mItems = items;
}
public void setListener(ItemListener listener) {
mListener = listener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext())
.inflate(R.layout.adapter, parent, false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.setData(mItems.get(position));
}
@Override
public int getItemCount() {
return mItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView imageView;
public TextView textView;
public Item item;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
imageView = (ImageView) itemView.findViewById(R.id.imageView);
textView = (TextView) itemView.findViewById(R.id.textView);
}
public void setData(Item item) {
this.item = item;
imageView.setImageResource(item.getDrawableResource());
textView.setText(item.getTitle());
}
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(item);
}
}
}
public interface ItemListener {
void onItemClick(Item item);
}
}
यहाँ के बाद क्लिक शो दृश्य पर कब्जा पहली और दूसरी बार के लिए बटन हैं second click
का उपयोग आप अपने फ़ोन पर 'हाल' बटन दबाएँ और एक अन्य एप्लिकेशन को खोलते हैं, तो इसे फिर से दबाएँ और अपने अनुप्रयोग के लिए वापस जाओ। क्या आपके रीसाइक्लिंग व्यू में आइटम दिखते हैं? सुझाए गए कॉलबैक कार्यों का उपयोग कर – Blundell