2017-02-18 63 views
1

Я разрабатываю приложение с использованием firebase для загрузки файлов и просмотра его в Recyclerview , когда я нажимаю на любой элемент, я должен перейти к другому действию и просмотреть файл в webView. Проблема заключается в том, когда я нажимаю на любой элемент взять первый файл загружен в firebase, мне нужно, когда я нажимаю в любом элементе взять файл для этого элементаОбновить значение на Recyclerview click listener

public class postShows extends AppCompatActivity { 

    private RecyclerView postlist; 
    private DatabaseReference mdatabase; 
    private FirebaseAuth auth; 
    ImageView imagepostl; 
    TextView textname; 
    String ma,mmmmmm; 
    PostUtils m; 


    Context context; 
    public static String imageURL, fileType,fileNAme; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_post_shows); 
     mdatabase = FirebaseDatabase.getInstance().getReference().child(PostNew.item); 
     auth = FirebaseAuth.getInstance(); 
     imagepostl = (ImageView) findViewById(R.id.imagefilesource); 
     textname = (TextView) findViewById(R.id.textfilename); 
     postlist = (RecyclerView) findViewById(R.id.postRecycle); 
     postlist.setHasFixedSize(true); 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
     linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     postlist.setLayoutManager(linearLayoutManager); 

    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     FirebaseRecyclerAdapter<PostUtils, PostViewHolder> firebaseRecyclerAdapter = new 
       FirebaseRecyclerAdapter<PostUtils, PostViewHolder>(
         PostUtils.class, 
         R.layout.post_row, 
         PostViewHolder.class, 
         mdatabase 


       ) 

       { 


        @Override 
        protected void populateViewHolder(PostViewHolder viewHolder, PostUtils m, int position) { 
         fileType = m.getfiletype(); 
         fileNAme=m.getFileName(); 

         // viewHolder.setDesc(m.getDescription()); 
         if (m.getfiletype().equals("application/vnd.openxmlformats-officedocument.wordprocessingml.document")) { 
          // imagepostl.setImageResource(R.drawable.word); 
          viewHolder.setFileName(m.getFileName()); 
          viewHolder.setWord(imagepostl); 
          mmmmmm= viewHolder.setImageURL(ma,m); 

         } else if (m.getfiletype().equals("application/pdf")) { 
          viewHolder.setFileName(m.getFileName()); 
          viewHolder.setPDF(imagepostl); 
          mmmmmm= viewHolder.setImageURL(ma,m); 


         } else if (m.getfiletype().contains("image")) { 

          viewHolder.setimage(imagepostl); 
          mmmmmm= viewHolder.setImageURL(ma,m); 


         } else { 
          viewHolder.setFileName(m.getFileName()); 
          { 
           viewHolder.setimage(imagepostl); 
          } 
         } 
        } 
        @Override 
        public PostViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { 
         PostViewHolder viewHolder = super.onCreateViewHolder(parent, viewType); 
         viewHolder.setOnClickListener(new PostViewHolder.ClickListener() { 

          @Override 
          public void onItemClick(View view, int position) { 
           Intent intent = new Intent(Kasittestbank.getAppContext(), Kasit.class); 
           intent.putExtra("imageURL",mmmmmm); 
           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           Kasittestbank.getAppContext().startActivity(intent); 
          } 

          @Override 
          public void onItemLongClick(View view, int position) { 
           Toast.makeText(Kasittestbank.getAppContext(), "Item long clicked at " + position, Toast.LENGTH_SHORT).show(); 

          } 
         }); 
         return viewHolder; 
        } 
       }; 

     postlist.setAdapter(firebaseRecyclerAdapter); 
    } 


    public static class PostViewHolder extends RecyclerView.ViewHolder { 

     View mview; 
     Bitmap bitmap; 
     FileOpen fileOpen; 


     public PostViewHolder(View itemView) { 
      super(itemView); 
      mview = itemView; 
      mview.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        mClickListener.onItemClick(v, getAdapterPosition()); 

       } 
      }); 
     } 

     private PostViewHolder.ClickListener mClickListener; 

     //Interface to send callbacks... 
     public interface ClickListener { 
      public void onItemClick(View view, int position); 

      public void onItemLongClick(View view, int position); 
     } 

     public void setOnClickListener(PostViewHolder.ClickListener clickListener) { 
      mClickListener = clickListener; 
     } 



     public void setFileName(String name) { 

      TextView textName = (TextView) mview.findViewById(R.id.textfilename); 
      textName.setText(name); 


     } 



     public void setWord(ImageView imageResourses) { 

      ImageView imageView = (ImageView) mview.findViewById(R.id.imagefilesource); 

      imageView.setImageResource(R.drawable.word); 


     } 

     public void setPDF(ImageView imageResourses) { 

      ImageView imageView = (ImageView) mview.findViewById(R.id.imagefilesource); 

      imageView.setImageResource(R.drawable.pdf); 


     } 

     public void setimage(ImageView imageResourses) { 

      ImageView imageView = (ImageView) mview.findViewById(R.id.imagefilesource); 

      imageView.setImageResource(R.drawable.image); 


     } 
       public String setImageURL(String url, PostUtils maa){ 

       url=maa.getImageUrl(); 

        return url; 

       } 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     getMenuInflater().inflate(R.menu.menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 


      case R.id.logut: 


       Logut(); 
       startActivity(new Intent(getApplicationContext(), LoginActivity.class)); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    public void Logut() { 
     auth.signOut(); 
     finish(); 
    } 

} 

ответ

0

при определении recyclerView, один метод, который вы должны переопределить это onBindViewHolder. Внутри этого метода вы определяете содержимое каждого элемента recyclerView.

Так что, если вы хотите к каждой строке может быть интерактивными, думаю, что нужно что-то вроде этого:

@Override 
public void onBindViewHolder(PostViewHolder postViewHolder, int i) { 
    postViewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Definde what happend when the item is clicked 
      //To identify which row, you can use postViewHolder.getAdapterPosition(); 
     } 
    }); 

} 

Позвольте мне знать, если работает.

+0

Я знаю, что уже определил проблему, как определить изображение для каждого элемента. –

+0

Я не вижу четкого кода, но вы должны определить все характеристики строки на ресайклере (здесь вы определяете, что каждая строка имеет imageUrl), а затем вы можете отправить список ресайклеру со всеми данными всех строк. После этого в onBindViewHolder вы устанавливаете imageUrl этой строки с положением списка, который соответствует. Этот пример, может быть, может вам помочь. http://www.androidhive.info/2016/01/android-working-with-recycler-view/ – Diekrul

+0

оцените вашу благодарность –

 Смежные вопросы

  • Нет связанных вопросов^_^