Reputation:
activity_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerview"
/>
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/floatingactionbutton"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
/>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekbar"
android:layout_above="@+id/floatingactionbutton"/>
</RelativeLayout>
list_item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:text="hi"/>
</LinearLayout>
Video
public class Video {
private String videoUrl;
public Video() {
}
public Video(String videoUrl) {
this.videoUrl = videoUrl;
}
public String getVideoUrl() {
return videoUrl;
}
public void setVideoUrl(String videoUrl) {
this.videoUrl = videoUrl;
}
}
VideoAdapter
public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.MyViewHolder> {
private List<Video> videoList;
private Context context;
public static final String Position="AdapterPosition";
public VideoAdapter(List<Video> videoList, Context context) {
this.videoList = videoList;
this.context = context;
}
@Override
public VideoAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.list_item, null);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(VideoAdapter.MyViewHolder holder, int position) {
Video contacts = videoList.get(position);
holder.textView.setText("Hi");
Toast.makeText(context,contacts.getVideoUrl().toString(),Toast.LENGTH_SHORT).show();
}
@Override
public int getItemCount() {
return videoList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView textView;
private final Context context;
public MyViewHolder(View itemView) {
super(itemView);
context = itemView.getContext();
textView = (TextView) itemView.findViewById(R.id.textview);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public static final String ANONYMOUS = "anonymous";
public static final int RC_SIGN_IN = 1;
private static final int RC_PHOTO_PICKER = 2;
private String mUsername;
// Firebase instance variables
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mMessagesDatabaseReference;
private ChildEventListener mChildEventListener;
private FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
private FirebaseStorage mFirebaseStorage;
private StorageReference mChatPhotosStorageReference;
private FirebaseRemoteConfig mFirebaseRemoteConfig;
private SeekBar seekBar;
private RecyclerView recyclerView;
private FloatingActionButton floatingActionButton;
NotificationCompat.Builder notificationBuilder;
VideoAdapter videoAdapter;
List<Video> videoList;
NotificationManager notificationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUsername = ANONYMOUS;
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
floatingActionButton = (FloatingActionButton) findViewById(R.id.floatingactionbutton);
videoList = new ArrayList();
// Initialize Firebase components
mFirebaseDatabase = FirebaseDatabase.getInstance();
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseStorage = FirebaseStorage.getInstance();
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
seekBar = (SeekBar) findViewById(R.id.seekbar);
mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("videomessages");
mChatPhotosStorageReference = mFirebaseStorage.getReference().child("videos");
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
onSignedInInitialize(user.getDisplayName());
} else {
// User is signed out
onSignedOutCleanup();
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setProviders(
AuthUI.EMAIL_PROVIDER,
AuthUI.GOOGLE_PROVIDER)
.build(),
RC_SIGN_IN);
}
}
};
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("video/*");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
}
});
attachDatabaseReadListener();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
if (resultCode == RESULT_OK) {
// Sign-in succeeded, set up the UI
Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
// Sign in was canceled by the user, finish the activity
Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
finish();
}
} else if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
new MyAsyncTask().execute(selectedImageUri);
// Get a reference to store file at chat_photos/<FILENAME>
}
;
}
@Override
protected void onResume() {
super.onResume();
mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}
@Override
protected void onPause() {
super.onPause();
if (mAuthStateListener != null) {
mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
}
private void onSignedInInitialize(String username) {
mUsername = username;
attachDatabaseReadListener();
}
private void onSignedOutCleanup() {
mUsername = ANONYMOUS;
}
private void attachDatabaseReadListener() {
mMessagesDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
videoList.clear();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Video postSnapshotValue = postSnapshot.getValue(Video.class);
if (!videoList.contains(postSnapshotValue)) {
videoList.add(postSnapshotValue);
Log.i(TAG, "onDataChange: " + videoList);
}
}
videoAdapter = new VideoAdapter(videoList, getApplicationContext());
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
recyclerView.setAdapter(videoAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public class MyAsyncTask extends AsyncTask<Uri, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Uri... params) {
StorageReference photoRef = mChatPhotosStorageReference.child(params[0].getLastPathSegment());
// Upload file to Firebase Storage
photoRef.putFile(params[0])
.addOnSuccessListener(MainActivity.this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// When the image has successfully uploaded, we get its download URL
// progressBar.setVisibility(View.VISIBLE);
Uri downloadUrl = taskSnapshot.getDownloadUrl();
// Set the download URL to the message box, so that the user can send it to the database
Video video = new Video(downloadUrl.toString());
mMessagesDatabaseReference.push().setValue(video);
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
int progress = (int) ((100 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount());
seekBar.setProgress(progress);
notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary))
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText("Download in progress")
.setContentIntent(contentIntent(getApplicationContext()))
.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
}
notificationManager = (NotificationManager)
getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
for (int incr = progress; incr <= 100; incr += 5) {
notificationBuilder.setProgress(100, progress, false);
notificationManager.notify(20, notificationBuilder.build());
}
if(progress>=100){
notificationBuilder.setContentText("Download complete").setProgress(0, 0, false);
notificationManager.notify(20, notificationBuilder.build());
}
}
});
return null;
}
@Override
protected void onPostExecute(Void integer) {
super.onPostExecute(integer);
// Do the "lengthy" operation 20 times
}
}
private PendingIntent contentIntent(Context context) {
Intent startActivityIntent = new Intent(context, MainActivity.class);
return PendingIntent.getActivity(
context,
0,
startActivityIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
}
I went through all questions on this,but failed to find answer to this question.I have added library for recyclerview in my gradle file.I couldnt figure it out what i was missing.I have implemted RecyclerView many times.But in this project i dont know what am i doing wrong that recyclerview wont display.Please help
Upvotes: 1
Views: 77
Reputation: 1
public class Video { private String videoUrl; public Video() { } public Video(String videoUrl) { this.videoUrl = videoUrl; } public String getVideoUrl() { return videoUrl; } public void setVideoUrl(String videoUrl) { this.videoUrl = videoUrl; } }``
In video class use getter instead of setter may be it works.
Upvotes: 0
Reputation: 12735
Change the place where you called:
getApplicationContext()
Use:
MainActivity.this
And because you are not in an inner class You can just call:
this
Upvotes: 1
Reputation: 1419
EDIT:
try using this
instead of getApplicationContext
();
Try This.
@Override public VideoAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view = LayoutInflater.from(context).inflate(R.layout.list_item, parent,false);
return new MyViewHolder(view);
}
Upvotes: 0
Reputation: 665
did you add the correct version in build.gradle.
try
compile 'com.android.support:recyclerview-v7:25.0.1'
you can refer following simple recyclerview code also
https://github.com/thinu/android-recyclerview-simple/
Upvotes: 0