0
グリッドビューを使用して、文字列の配列から項目を設定しました。 コードは問題なく動作しますが、問題があります。GridView items restart android
私はアイテムを追加するたびに10個を追加し、アイテム11にジャンプするのではなく、最初のアイテムに戻ります。最終的な結果は次のようなものです:
1. 1
2. 2
3. 3
4. 4
5. 5
6. 6
7. 7
8. 8
9. 9
10. 10
11. 1
12. 2
...
これまで見てきたように、私が上/下をナビゲートすると、それは先頭からデータをロードし直します。 誰かが私を助けてくれますか?私は問題がどこにあるのか分からない。
CustomGridViewActivity.java:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
public class CustomGridViewActivity extends BaseAdapter {
private Context mContext;
private final String[] gridViewString;
private final String[] gridViewImageId;
public CustomGridViewActivity(Context context, String[] gridViewString, String[] gridViewImageId) {
mContext = context;
this.gridViewImageId = gridViewImageId;
this.gridViewString = gridViewString;
}
@Override
public int getCount() {
return gridViewString.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View convertView, ViewGroup parent) {
View gridViewAndroid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
gridViewAndroid = new View(mContext);
gridViewAndroid = inflater.inflate(R.layout.gridview_layout, null);
TextView textViewAndroid = (TextView) gridViewAndroid.findViewById(R.id.android_gridview_text);
ImageView imageViewAndroid = (ImageView) gridViewAndroid.findViewById(R.id.android_gridview_image);
textViewAndroid.setText(gridViewString[i]);
Picasso
.with(mContext)
.load(gridViewImageId[i])
.fit() // will explain later
.into((ImageView) imageViewAndroid);
//imageViewAndroid.setImageResource(gridViewImageId[i]);
} else {
gridViewAndroid = (View) convertView;
}
return gridViewAndroid;
}
}
gridview_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/android_custom_gridview_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/android_gridview_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="15dp" />
<TextView
android:id="@+id/android_gridview_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:textSize="12sp" />
</LinearLayout>
content_main.xml:
<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:gravity="center"
android:numColumns="auto_fit"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" />
Common.java:
//SearchPanel
static String[] gridViewString = new String[30];
static String[] gridViewImages = new String[30];
MainActivity.java:あなたのアダプタのgetViewメソッド()メソッドは行場所を移動するには
public void Search() {
//GridView
CustomGridViewActivity adapterViewAndroid = new CustomGridViewActivity(MainActivity.this, Common.gridViewString, Common.gridViewImages);
androidGridView=(GridView)findViewById(R.id.grid_view);
androidGridView.setAdapter(adapterViewAndroid);
androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int i, long id) {
Toast.makeText(MainActivity.this, "GridView Item: " + Common.gridViewString[+i], Toast.LENGTH_LONG).show();
}
});
}
(念のため、「一般的な」ファイルからデータをJSONで追加され、それがすべて違う)
コード?あなたはグリッドにアイテムを追加しています –
MainActivityとCustomGridViewActivity.java – Jose
グリッドに新しい要素を追加する場所にコードを投稿することは、「アイテムを追加するたびに」と言ったように問題が発生しました。「10個」を追加します –