簡體   English   中英

私人課程的意圖錯誤

[英]Intent error with private class

我試圖使用意圖調用另一個類。 但這是行不通的。 我正在使用android studio實施此項目。

該應用程序應顯示一個帶有流行品牌徽標的屏幕,例如亞馬遜,谷歌,推特,facebook等。單擊徽標時,通過調用AnotherActivity.java可以顯示另一個屏幕(活動)。

下面是似乎包含該問題的類:

package com.aquino.gridlayoutmanagerrecyclerview;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
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 android.widget.Toast;

public class ActivityMain extends AppCompatActivity {

    RecyclerView rvMain;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rvMain = (RecyclerView) findViewById(R.id.rvMain);
        Bitmap[] logos = new Bitmap[12];
        logos[0] = BitmapFactory.decodeResource(getResources(), 
R.drawable.medida2);
    logos[1] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_fb);
    logos[2] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_google);
    logos[3] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_insta);
    logos[4] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_linkedin);
    logos[5] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_microsoft);
    logos[6] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_myspace);
    logos[7] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_skype);
    logos[8] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_snapchat);
    logos[9] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_twitter);
    logos[10] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_viber);
    logos[11] = BitmapFactory.decodeResource(getResources(), R.drawable.logo_whatsapp);
    MyAdapter adapter = new MyAdapter(getResources().getStringArray(R.array.company_list), logos);
    rvMain.setLayoutManager(new GridLayoutManager(ActivityMain.this, 2));
    rvMain.setAdapter(adapter);
}//end of onCreate()

private class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {

    String[] companyList;
    Bitmap[] logoList;

    public MyAdapter(String[] companyList, Bitmap[] logoList) {
        this.companyList = companyList;
        this.logoList = logoList;
    }


    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        holder.logo.setImageBitmap(logoList[position]);
        holder.logo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(this, AnotherActivity.class);
                startActivity(intent);
            }
        });
        holder.name.setText(companyList[position]);
    }

    @Override
    public int getItemCount() {
        return companyList.length;
    }

}//end of MyAdapter
private class MyViewHolder extends RecyclerView.ViewHolder{

    public ImageView logo;
    public TextView name;

    public MyViewHolder(View itemView) {
        super(itemView);
        logo = (ImageView)itemView.findViewById(R.id.ivLogo);
        name = (TextView)itemView.findViewById(R.id.tvCompany);
    }
 }//end of MyViewHolder
}

我無法弄清楚為什么無法在私有類MyAdapter中添加意圖。

歡迎任何幫助

我不確定您遇到什么錯誤。

在recyclerview中實現onclick的好方法是創建一個界面。

在活動中實現接口,在活動中實現接口的方法中創建意圖,然后在recyclerview中調用它

或使用這個:

在活動中定義RecyclerView的onCLickListener

根據您的代碼,一切都很好。 但是在專用適配器中,您將不會直接通過“ this”獲得類的上下文。 所以只需替換代碼。

 Intent intent = new Intent(ActivityMain.this, AnotherActivity.class);
 startActivity(intent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM