簡體   English   中英

無法識別Android Studio setAdapter

[英]Android Studio setAdapter not recognized

我正在針對開發人員第二版的Android Boot Camp的ch7中進行練習。 該書針對ICS,但是我嘗試不使用已棄用的Gallery小部件,而改用Horizo​​ntalScrollView

現在無法識別setAdapter,並且在代碼中我還有一個問題, arg0arg2也無法識別。 我可以通過將對 Horizo​​ntalScrollView的調用恢復為Gallery來消除setAdapter問題,但arg問題仍然存在。 以下是較小的類文件的完整代碼。

謝謝!

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;
        }
    }
}

替換這兩個變量以position

您需要使用HorizontalScrollView包裝LinearLayout或類似的東西,與使用常規ScrollView完全相同。 其他(更好)的選項是將RecyclerViewLinearLayoutManager ,將其調整為水平滾動。 像這樣:

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

在這種情況下,您需要使適配器擴展RecyclerView.Adapter

暫無
暫無

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

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