Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法识别Android Studio setAdapter_Android_Android Studio - Fatal编程技术网

无法识别Android Studio setAdapter

无法识别Android Studio setAdapter,android,android-studio,Android,Android Studio,我正在为开发者做一个Android训练营第二版的ch7练习。这本书的目标是ICS,但我尝试不使用弃用的Gallery小部件,而是使用HorizontalScrollView 现在,setAdapter无法识别,而且在代码中,我遇到了arg0和arg2也无法识别的问题。我可以通过将调用还原到HorizontalScrollView返回到Gallery来消除setAdapter问题,但arg问题仍然存在。下面是smallish类文件的完整代码 谢谢 import android.app.Activi

我正在为开发者做一个Android训练营第二版的ch7练习。这本书的目标是ICS,但我尝试不使用弃用的Gallery小部件,而是使用HorizontalScrollView

现在,setAdapter无法识别,而且在代码中,我遇到了arg0arg2也无法识别的问题。我可以通过将调用还原到HorizontalScrollView返回到Gallery来消除setAdapter问题,但arg问题仍然存在。下面是smallish类文件的完整代码

谢谢

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends Activity {

    public Integer[] Animals = {R.drawable.elephant, R.drawable.gorilla, R.drawable.leopard, R.drawable.monkey, R.drawable.panda, R.drawable.redpanda};

    ImageView imageView;


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

        HorizontalScrollView ga = (HorizontalScrollView) findViewById(R.id.horizontalScrollView);
        imageView = (ImageView) findViewById(R.id.imgAnimal);
        ga.setAdapter(new ImageAdapter(this));
        ga.setOnClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getBaseContext(), "You have selected picture " + (arg2 + 1)
                        + " of the endangered species", Toast.LENGTH_SHORT).show();
                imageView.setImageResource(Animals[arg2]);

            }
        });


    }


    public class ImageAdapter extends BaseAdapter {
        private Context context;

        public ImageAdapter(Context c) {
            context = c;
        }

        @Override
        public int getCount() {
            return Animals.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView pic = new ImageView(context);
            pic.setImageResource(Animals[arg0]);
            pic.setScaleType(ImageView.ScaleType.FIT_XY);
            pic.setLayoutParams(new HorizontalScrollView.LayoutParams(200, 175));
            return pic;
        }
    }
}
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.BaseAdapter;
导入android.widget.HorizontalScrollView;
导入android.widget.ImageView;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
公共整数[]动物={R.drawable.elephant,R.drawable.gorilla,R.drawable.leopard,R.drawable.monkey,R.drawable.panda,R.drawable.redpanda};
图像视图图像视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HorizontalScrollView ga=(HorizontalScrollView)findViewById(R.id.HorizontalScrollView);
imageView=(imageView)findViewById(R.id.imgAnimal);
ga.setAdapter(新的ImageAdapter(this));
ga.setOnClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(getBaseContext(),“您已选择图片”+(arg2+1)
+“濒危物种”,吐司。长度(短)。show();
setImageResource(动物[arg2]);
}
});
}
公共类ImageAdapter扩展了BaseAdapter{
私人语境;
公共图像适配器(上下文c){
上下文=c;
}
@凌驾
public int getCount(){
返回长度;
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView pic=新的ImageView(上下文);
图:setImageResource(动物[arg0]);
pic.setScaleType(ImageView.ScaleType.FIT_XY);
图.setLayoutParams(新的水平滚动视图.LayoutParams(200175));
返回pic;
}
}
}

将这两个变量替换为
位置
您需要用
水平滚动视图
包装一个
线性布局
或类似的东西,方法与常规的
滚动视图
完全相同。另一个(更好的)选择是将
RecyclerView
LinearLayoutManager
一起使用,将其调整为水平滚动。大概是这样的:

mRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));

在这种情况下,您需要使适配器扩展
RecyclerView.adapter

这两个变量是在哪里声明的?顺便说一句,这两个变量的使用是数组动物的位置…我在打开“public class MainActivity extensed Activity{”之后声明了动物我不明白为什么更改它会对java有所帮助。你能解释一下吗?我用线性布局包装了水平滚动视图,但这不会更改java类中的任何红色R或代码。/你是说arg和arg2?好吧,这样做了。红色不再显示了,但现在整个“public void onItemClick”方法都变红了(有合适的术语吗?)鼠标悬停表示“视图中的setOnClickListener(android.view.view.OnClickListener)不能应用于[这些现在是红色的](匿名android.widget.AdapterView.OnItemClickListener)此外,setAdapter仍然是红色的,并且setOnClickListener中的几个R's should use View.OnClickListener不是AdapterView.OnItemClickListener。HorizontalScrollView不是AdapterView,它没有setOnItemClickListener和setAdapter方法。