0

大家好我试图开始活动,当我点击RecyclerView,它开始时,我将代码添加到自定义适配器,但是当我写它在活动它只是给我在日志中的位置.. 所以任何帮助如何从点击RecyclerView开始活动

这里是代码的OnClick的活动,而这正是我试图做

@Override 
    public void onItemClick(int position, View v) { 
     Log.e("TAG", "You clicked number " + mAdapter.getItemId(position) + ", which is at cell position " + position); 
//  this.startActivity(new Intent(FrameListActivity.this , FinalActivity.class)); 
//  Bitmap frameSelected = results.get(position).getImage(); 
//  Log.e("frameSelected" , frameSelected+""); 
//  createImageFromBitmap(frameSelected , "frameImage"); 
     positionId = "" + position; 
     Context context = v.getContext(); 
     Intent intent = new Intent(context.getApplicationContext() , FinalActivity.class); 
     intent.putExtra("resultpos", "" + positionId); 
     context.getApplicationContext().startActivity(intent); 
     finish(); 
    } 

这里是活动

package com.abed.montage.hijabapptest; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.View; 

import com.kbeanie.imagechooser.api.ImageChooserManager; 

import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.util.ArrayList; 
import java.util.List; 

public class FrameListActivity extends AppCompatActivity implements PhotoRecyclerViewAdapter.MyClickListener { 
    private RecyclerView photoRecyclerView; 
    private RecyclerView.Adapter mAdapter; 
    private List<Integer> framePhotoList ; 
    List<PhotoClass> results ; 
    private static String LOG_TAG = "CardViewActivity"; 
    String positionId ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_frame_list); 
     photoRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); 
     photoRecyclerView.setHasFixedSize(true); 
     int numberOfColumns = 2; 
     // mLayoutManager = new LinearLayoutManager(); 
     photoRecyclerView.setLayoutManager(new GridLayoutManager(this , numberOfColumns)); 
     mAdapter = new PhotoRecyclerViewAdapter(getDataSet() , this); 
     photoRecyclerView.setAdapter(mAdapter); 
    } 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     ((PhotoRecyclerViewAdapter) mAdapter).setOnItemClickListener(new PhotoRecyclerViewAdapter 
       .MyClickListener() { 
      @Override 
      public void onItemClick(int position, View v) { 
       Log.i(LOG_TAG, " Clicked on Item " + position); 
      } 
     }); 
    } 
    private List<PhotoClass> getDataSet() { 
     fillPhotoFrameList(); 
     results = new ArrayList<>(); 
     for (int index = 0; index < framePhotoList.size(); index++) { 
      PhotoClass obj = new PhotoClass(); 
      obj.setImage(framePhotoList.get(index)); 
      results.add(index, obj); 
     } 
     return results; 
    } 

    private void fillPhotoFrameList(){ 
     framePhotoList = new ArrayList<>(); 
     framePhotoList.add(R.drawable.frame_1); 
     framePhotoList.add(R.drawable.frame_2); 
     framePhotoList.add(R.drawable.frame_3); 
     framePhotoList.add(R.drawable.frame_4); 
     framePhotoList.add(R.drawable.frame_5); 
     framePhotoList.add(R.drawable.frame_6); 
     framePhotoList.add(R.drawable.frame_7); 
     framePhotoList.add(R.drawable.frame_8); 
     framePhotoList.add(R.drawable.frame_2); 
     framePhotoList.add(R.drawable.frame_10); 
     framePhotoList.add(R.drawable.frame_11); 
     framePhotoList.add(R.drawable.frame_12); 
     framePhotoList.add(R.drawable.frame_13); 
     framePhotoList.add(R.drawable.frame_14); 
     framePhotoList.add(R.drawable.frame_15); 
     framePhotoList.add(R.drawable.frame_16); 
     framePhotoList.add(R.drawable.frame_17); 
     framePhotoList.add(R.drawable.frame_18); 
     framePhotoList.add(R.drawable.frame_19); 
     framePhotoList.add(R.drawable.frame_20); 
    } 

    @Override 
    public void onItemClick(int position, View v) { 
     Log.e("TAG", "You clicked number " + mAdapter.getItemId(position) + ", which is at cell position " + position); 
//  this.startActivity(new Intent(FrameListActivity.this , FinalActivity.class)); 
//  Bitmap frameSelected = results.get(position).getImage(); 
//  Log.e("frameSelected" , frameSelected+""); 
//  createImageFromBitmap(frameSelected , "frameImage"); 
     positionId = "" + position; 
     Context context = v.getContext(); 
     Intent intent = new Intent(context , FinalActivity.class); 
     intent.putExtra("resultpos", "" + positionId); 
     context.startActivity(intent); 
     finish();; 
    } 
    public String createImageFromBitmap(Bitmap bitmap , String fileNameForSave) { 
     String fileName = fileNameForSave;//no .png or .jpg needed 
     try { 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes); 
      FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); 
      fo.write(bytes.toByteArray()); 
      // remember close file output 
      fo.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      fileName = null; 
     } 
     return fileName; 
    } 
} 

这里是适配器....

package com.abed.montage.hijabapptest; 

import android.content.Context; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.BitmapFactory; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

import java.util.List; 

/** 
* Created by hp15-AY on 02/27/2017. 
*/ 

public class PhotoRecyclerViewAdapter extends RecyclerView.Adapter<PhotoRecyclerViewAdapter.DataObjectHolder> { 

    private static String LOG_TAG = "MyRecyclerViewAdapter"; 
    private List<PhotoClass> mDataset; 
    private static MyClickListener myClickListener; 
Context context; 
    public static class DataObjectHolder extends RecyclerView.ViewHolder 
      implements View.OnClickListener { 
     ImageView photo; 


     public DataObjectHolder(View itemView) { 
      super(itemView); 
      photo = (ImageView) itemView.findViewById(R.id.photo); 
      Log.i(LOG_TAG, "Adding Listener"); 
      itemView.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      myClickListener.onItemClick(getAdapterPosition(), v); 
//   Context context = v.getContext(); 
//   Intent intent = new Intent(context, FinalActivity.class); 
//   context.startActivity(intent); 
     } 
    } 

    public void setOnItemClickListener(MyClickListener myClickListener) { 
     this.myClickListener = myClickListener; 
    } 

    public PhotoRecyclerViewAdapter(List<PhotoClass> myDataset , Context context) { 
     this.context = context ; 
     mDataset = myDataset; 
    } 

    @Override 
    public DataObjectHolder onCreateViewHolder(ViewGroup parent, 
               int viewType) { 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.cardview_photo, parent, false); 
     view.setBackgroundResource(R.drawable.rounded_frame); 
     DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
     return dataObjectHolder; 
    } 

    @Override 
    public void onBindViewHolder(DataObjectHolder holder, int position) { 
     holder.photo.setImageBitmap(BitmapFactory.decodeResource(context.getResources() ,mDataset.get(position).getImage())); 
    } 

    public void addItem(PhotoClass dataObj, int index) { 
     mDataset.add(index, dataObj); 
     notifyItemInserted(index); 
    } 

    public void deleteItem(int index) { 
     mDataset.remove(index); 
     notifyItemRemoved(index); 
    } 

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

    public interface MyClickListener { 
     public void onItemClick(int position, View v); 
    } 
} 

这里是类...

public class PhotoClass { 
    int id; 
    int image ; 

    public PhotoClass() { 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public void setImage(int image) { 
     this.image = image; 
    } 

    public int getId() { 
     return id; 
    } 

    public int getImage() { 
     return image; 
    } 

} 

FinalActivity的OnCreate

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.i(TAG, "Activity Created"); 
     setContentView(R.layout.activity_final); 

     mGlobal = (Global) getApplicationContext(); 

     imageViewThumbnail = (ImageView) findViewById(R.id.selectedimage); 
     saveIcon = (ImageView) findViewById(R.id.imageSave); 
     filterIcon = (ImageView) findViewById(R.id.editImage); 
     mImageViewFrame = (ImageView) findViewById(R.id.frameimage); 
//  mInterstitialAd = new InterstitialAd(this); 
//  mInterstitialAd.setAdUnitId(getApplicationContext().getString(R.string.admob_intersitials)); 
//  mAdRequest= new AdRequest.Builder().build(); 
//  mInterstitialAd.loadAd(mAdRequest); 
     imageViewThumbnail.setOnTouchListener(new MultiTouchListener()); 
     mDialog = Utils.SetProgressBar(mDialog, FinalActivity.this); 
     mDialog.dismiss(); 

     loadImage(imageViewThumbnail, mGlobal.getPath()); 
     String result = getIntent().getStringExtra("resultpos"); 
     pos = Integer.parseInt(result); 
     Log.w("Position===", "" + pos); 
     String imagevalue = frames[pos]; 
     Log.w("imagename=====++++", "" + imagevalue); 
     int resID = getResources().getIdentifier(imagevalue, "drawable", getPackageName()); 
     mImageViewFrame.setImageResource(resID); 
     saveIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
//    if (mInterstitialAd.isLoaded()) { 
//     mInterstitialAd.show(); 
//    } 
       RelativeLayout view = (RelativeLayout) findViewById(R.id.layout); 
       view.setDrawingCacheEnabled(true); 
       view.buildDrawingCache(); 
       Bitmap bm = view.getDrawingCache(); 
       SaveImage(bm); 
      } 
     }); 
     filterIcon.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       RelativeLayout view = (RelativeLayout) findViewById(R.id.layout); 
       view.setDrawingCacheEnabled(true); 
       view.buildDrawingCache(); 
       Bitmap bm = view.getDrawingCache(); 
       EditImage(bm); 

      } 
     });} 

的LoadImage功能:

private void loadImage(ImageView iv, final String path) { 
     if(!isAirplaneModeOn(this.getApplicationContext())) { 
      Picasso.with(FinalActivity.this) 
        .load(Uri.fromFile(new File(path))) 
        .fit() 
        .centerInside() 
        .into(iv, new Callback() { 
         @Override 
         public void onSuccess() { 
          Log.i(TAG, "Picasso Success Loading Thumbnail - " + path); 
         } 

         @Override 
         public void onError() { 
          Log.i(TAG, "Picasso Error Loading Thumbnail Small - " + path); 
         } 
        }); 
     } 
     else{ 
      //do something else? 
     } 

     File image = new File(path); 
     BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
     Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(), bmOptions); 
     engrave(bitmap); 

//  bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true); 
    } 



    @SuppressWarnings("deprecation") 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) 
    public static boolean isAirplaneModeOn(Context context) { 
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { 
      return Settings.System.getInt(context.getContentResolver(), 
        Settings.System.AIRPLANE_MODE_ON, 0) != 0; 
     } else { 
      return Settings.Global.getInt(context.getContentResolver(), 
        Settings.Global.AIRPLANE_MODE_ON, 0) != 0; 
     } 
    } 
} 
+0

发布类的完整代码.. – rafsanahmad007

回答

2

试试这个:在

onResume():您已经安装setOnItemClickListenerPhotoRecyclerViewAdapter

@Override 
protected void onResume() { 
    super.onResume(); 
    ((PhotoRecyclerViewAdapter) mAdapter).setOnItemClickListener(new PhotoRecyclerViewAdapter 
      .MyClickListener() { 
     @Override 
     public void onItemClick(int position, View v) { 
      Log.i(LOG_TAG, " Clicked on Item " + position); 
      Intent intent = new Intent(FrameListActivity.this , FinalActivity.class); 
      intent.putExtra("resultpos", "" + position); 
      startActivity(intent); 
     } 
    }); 
} 
+0

它的工作...谢谢sooo多:) –

+0

我现在有另一个问题,当它开始活动需要很长时间像3秒,请你审查代码和谢谢:) –

+0

sry为迟到的回应....把一个日志在'onResume()'看看它是否立即调用...我认为你的''FinalActivity'类可能会做沉重的操作,这就是为什么它需要时间来加载新的活动.... – rafsanahmad007

1

使用th是:

@Override 
    public void onItemClick(int position, View v) { 
     Log.e("TAG", "You clicked number " + mAdapter.getItemId(position) + ", which is at cell position " + position); 
//  this.startActivity(new Intent(FrameListActivity.this , FinalActivity.class)); 
//  Bitmap frameSelected = results.get(position).getImage(); 
//  Log.e("frameSelected" , frameSelected+""); 
//  createImageFromBitmap(frameSelected , "frameImage"); 
     positionId = "" + position; 
     Context context = FrameListActivity.this; 
     Intent intent = new Intent(context , FinalActivity.class); 
     intent.putExtra("resultpos", "" + positionId); 
     context.startActivity(intent); 
     finish(); 
    } 

希望这会有所帮助。

+1

不,它不工作:(它只是回归的位置 –

+0

检查我的更新的答案,context.startActivity(intent),您是否在活动中添加了自定义适配器? – tahsinRupam

+0

是的,我没有向我展示带有数据的适配器,如果我没有添加,更新不起作用乙醚 –