グリッドビューのカスタム背景を設定したいが、グリッドの読み込み、グリッドの背景の最初のアイテムが読み込まれずに残りのアイテムが正しく読み込まれている。 以下は私のコードですので助けてください。Android GridViewの最初のアイテムの背景が機能していない
public class PicassoExample extends Activity {
private GridView gvFirst;
private ArrayList<MyModel> arrayList;
private PicassoImageAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_picasso_example);
gvFirst = (GridView)findViewById(R.id.gvFirst);
arrayList = new ArrayList<MyModel>();
loadArraylist();
adapter = new PicassoImageAdapter(getApplicationContext(),arrayList);
gvFirst.setAdapter(adapter);
}
private void loadArraylist() {
arrayList.add(new MyModel("http://i.imgur.com/rFLNqWI.jpg"));
arrayList.add(new MyModel("http://i.imgur.com/C9pBVt7.jpg"));
arrayList.add(new MyModel("http://i.imgur.com/rT5vXE1.jpg"));
}
}
ここは私のアダプタクラスです。
public class PicassoImageAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater;
private ArrayList<MyModel> arrayList;
public PicassoImageAdapter(Context applicationContext, ArrayList<MyModel> arrayList) {
context = applicationContext;
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
class Holder {
ImageView imageView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View myView = null;
try {
Holder holder;
myView = convertView;
if (myView == null) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
myView = inflater.inflate(R.layout.adapter_picasso, null);
holder = new Holder();
// here I am setting custom backgroud of each item of gride.
myView.setBackgroundResource(R.drawable.corner_gride_layout);
holder.imageView = (ImageView) myView.findViewById(R.id.imageView);
myView.setTag(holder);
}
else {
holder = (Holder) myView.getTag();
}
MyModel model = arrayList.get(position);
Picasso.with(this.context)
.load(model.getStrUrl())
.placeholder(R.drawable.ic_launcher)
.into(holder.imageView);
} catch (Exception e) {
e.printStackTrace();
}
return myView;
}
}
ここはアダプターのxmlです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitXY"
/>
</LinearLayout>
実際に私はPicasso
ライブラリを使用してインターネットから写真を読み込みました。私はグリッドビューの各項目のカスタム背景を作成しましたが、グリッドビューが最初にロードされるとき、グリッドの最初の項目(グリッドのゼロ位置)のみが機能しないこと、およびグリッドビューの背景のすべての項目が適切に設定されます。
設定された背景色の背景を外に出すif else条件。 myView.setBackgroundResource(R.drawable.corner_gride_layout); –