2017-01-17 3 views
2

Этот код содержит кнопку совместного доступа, кнопку загрузки и кнопку favourate.Save, Share & Favorite Imageview в recyclerview

до сих пор его правильная работа с кнопкой favourate, если я удалю метод onClick из ViewHolder. Я хочу реализовать кнопку совместного использования/сохранения onClick share/загрузить изображение в ImageView в recyclerview. Просьба игнорировать грамматические ошибки

Это моя карточка.

 import android.content.ContentResolver; 
     import android.content.Intent; 
     import android.net.Uri; 
     import android.os.Bundle; 
     import android.support.annotation.Nullable; 
     import android.support.v4.app.Fragment; 
     import android.support.v7.widget.LinearLayoutManager; 
     import android.support.v7.widget.RecyclerView; 
     import android.support.v7.widget.Toolbar; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.ImageView; 
     import android.widget.TextView; 
     import android.widget.Toast; 
     import java.util.ArrayList; 



public class CardFragment extends Fragment { 

    ArrayList<WonderModel> listitems = new ArrayList<>(); 
    RecyclerView MyRecyclerView; 
    String Wonders[] = {"Chichen Itza","Christ the Redeemer","Great Wall of China","Machu Picchu","Petra","Taj Mahal","Colosseum"}; 
    int Images[] = {R.drawable.chichen_itza,R.drawable.christ_the_redeemer,R.drawable.great_wall_of_china,R.drawable.machu_picchu,R.drawable.petra,R.drawable.taj_mahal,R.drawable.colosseum}; 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initializeList(); 
     getActivity().setTitle("7 Wonders of the Modern World"); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fragment_card, container, false); 
     MyRecyclerView = (RecyclerView) view.findViewById(R.id.cardView); 
     MyRecyclerView.setHasFixedSize(true); 
     LinearLayoutManager MyLayoutManager = new LinearLayoutManager(getActivity()); 
     MyLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     if (listitems.size() > 0 & MyRecyclerView != null) { 
      MyRecyclerView.setAdapter(new MyAdapter(listitems)); 
     } 
     MyRecyclerView.setLayoutManager(MyLayoutManager); 

     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

    } 

    public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { 
     private ArrayList<WonderModel> list; 

     public MyAdapter(ArrayList<WonderModel> Data) { 
      list = Data; 
     } 

     @Override 
     public MyViewHolder onCreateViewHolder(ViewGroup parent,int viewType) { 
      // create a new view 
      View view = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.recycle_items, parent, false); 
      MyViewHolder holder = new MyViewHolder(view); 
      return holder; 
     } 

     @Override 
     public void onBindViewHolder(final MyViewHolder holder, int position) { 

      holder.titleTextView.setText(list.get(position).getCardName()); 
      holder.coverImageView.setImageResource(list.get(position).getImageResourceId()); 
      holder.coverImageView.setTag(list.get(position).getImageResourceId()); 
      holder.likeImageView.setTag(R.drawable.ic_like); 

     } 

     @Override 
     public int getItemCount() { 
      return list.size(); 
     } 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 

     public TextView titleTextView; 
     public ImageView coverImageView; 
     public ImageView likeImageView; 
     public ImageView shareImageView; 

     public MyViewHolder(View v) { 
      super(v); 
      titleTextView = (TextView) v.findViewById(R.id.titleTextView); 
      coverImageView = (ImageView) v.findViewById(R.id.coverImageView); 
      likeImageView = (ImageView) v.findViewById(R.id.likeImageView); 
      shareImageView = (ImageView) v.findViewById(R.id.shareImageView); 
      likeImageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 


        int id = (int)likeImageView.getTag(); 
         if(id == R.drawable.ic_like){ 

          likeImageView.setTag(R.drawable.ic_liked); 
          likeImageView.setImageResource(R.drawable.ic_liked); 

          Toast.makeText(getActivity(),titleTextView.getText()+" added to favourites",Toast.LENGTH_SHORT).show(); 

         }else{ 

          likeImageView.setTag(R.drawable.ic_like); 
          likeImageView.setImageResource(R.drawable.ic_like); 
          Toast.makeText(getActivity(),titleTextView.getText()+" removed from favourites",Toast.LENGTH_SHORT).show(); 


         } 

       } 
      }); 



      shareImageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 






        Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + 
          "://" + getResources().getResourcePackageName(coverImageView.getId()) 
          + '/' + "drawable" + '/' + getResources().getResourceEntryName((int)coverImageView.getTag())); 


        Intent shareIntent = new Intent(); 
        shareIntent.setAction(Intent.ACTION_SEND); 
        shareIntent.putExtra(Intent.EXTRA_STREAM,imageUri); 
        shareIntent.setType("image/jpeg"); 
        startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 



       } 
      }); 



     } 
    } 

    public void initializeList() { 
     listitems.clear(); 

     for(int i =0;i<7;i++){ 


      WonderModel item = new WonderModel(); 
      item.setCardName(Wonders[i]); 
      item.setImageResourceId(Images[i]); 
      item.setIsfav(0); 
      item.setIsturned(0); 
      listitems.add(item); 

     } 




    } 
} 

Вот MainActivity.Java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v7.app.AppCompatActivity; 

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FragmentManager fm = getSupportFragmentManager(); 
     Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); 

     if (fragment == null) { 
      fragment = new CardFragment(); 
      ; 
      fm.beginTransaction() 
        .add(R.id.fragmentContainer, fragment) 
        .commit(); 


     } 



    } 
} 

ответ

0

Создать свой ViewHolder Constructor Как это

public MyViewHolder(View v,Activity activity) { 
    super(v); 
this.activity = activity 
/////Remaining code 

Теперь вы можете получить контекст деятельности в классе viewholder. Надеюсь, это поможет вам!

+0

Thanks divyansh. Я разрешаю это. – Manasa

+0

Добро пожаловать, если вам нравится ответ, тогда, пожалуйста, проголосуйте –

+0

Здесь моя новая проблема: когда я нажимаю кнопку совместного доступа, он говорит, что формат файла не поддерживается и, пожалуйста, помогите мне в загрузке изображения из _imageview_ в галерею i.e., внутреннее хранилище. любимая кнопка работает нормально. – Manasa

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