Вот моя реализация GridView для приложения Android.Для программы «Первый раз» она работает хорошо. Но после некоторой прокрутки вверх и вниз Моя проблема в том, что когда в режиме просмотра сетки я прокручиваю его, я иногда помещаю неправильный текст в неожиданное положение.
Мой исходный код для адаптера GridView следующий.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGridView=(GridView)findViewById(R.id.gridview_id);
InitializeVariable();
mGridView.setAdapter(new GridAdapter(GridViewExampleActivity.this));
mGridAdapter=new GridAdapter(GridViewExampleActivity.this);
// mGridView.setEnabled(false);
mGridView.setOnLongClickListener(this);
mGridView.setOnItemClickListener(this);
}
public class GridAdapter extends BaseAdapter{
public Context mContext_GridAdapter=getApplicationContext();
GridAdapter(Context context){
this.mContext_GridAdapter=context;
}
@Override
public int getCount() {
return Fix_Grid_View;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout mRelative_Box_Grid;
TextView mTextView;
View v;
if(convertView==null){
mLayoutInflater=LayoutInflater.from(GridViewExampleActivity.this);
v=mLayoutInflater.inflate(R.layout.relative_box_view, null);
mTextView=(TextView)v.findViewById(R.id.txt_number);
mRelative_Box_Grid=(RelativeLayout)v.findViewById(R.id.relative_view);
mRelative_Box_Grid.setLayoutParams(new GridView.LayoutParams(GridView.AUTO_FIT,Device_Height));
mRelative_Box_Grid.setPadding(2, 2, 2, 2);
mTextView.setTextSize(Fix_Text_Size);
mTextView.setText(String.valueOf(position));
mTextView.setId(position);
}else{
v=convertView;
}
return v;
}
}
Вот мой основной xml-файл
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<GridView android:numColumns="3"
android:stretchMode="columnWidth"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/gridview_id"
android:longClickable="true"
></GridView>
</LinearLayout>
Я поместил тот же файл main.xml в res / layout-land для ландшафтного режима.
и я также добавилэта строка в моем файле AndroidManifest для изменения дескриптора ориентации
android:configChanges="orientation"
, и я также реализую, когда мы щелкаем по любому элементу в той позиции, что TextView ушел за невидимым здесь, является кодом для этого.
@Override
public void onItemClick(AdapterView<?> AdapterView, View view, int position, long arg3) {
int Child_Count;
RelativeLayout mRelativeLayout;
TextView mTextView;
try{
Toast.makeText(GridViewExampleActivity.this, "Position "+ position, 600).show();
Child_Count=AdapterView.getChildCount();
mRelativeLayout=(RelativeLayout) AdapterView.getChildAt(position);
mTextView=(TextView) mRelativeLayout.getChildAt(0);
mTextView.setVisibility(View.INVISIBLE);
// mGridAdapter.notifyDataSetChanged();
// mGridView.setAdapter(mGridAdapter);
Log.v(TAG, "Child Count is"+ Child_Count);
}catch(Exception e){
Log.v("log", " Mes"+TAG +e.getMessage());
}
}
эта функция работает хорошо, но не работает в течение некоторого времени после изменения ориентации в моем эмуляторе с помощью клавиш Ctrl + F11.Вот мой xml-файл Inflater View.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/rectangle_white"
android:id="@+id/relative_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:text="@string/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/txt_number"/>
</RelativeLayout>
Здесь я прилагаю справочное изображение моего демонстрационного приложения для задачи, которую я получаю.
Посмотрите на первое изображение, когда i Прокрутите вверх и вниз значение обмена Textview. Неожиданно
, и когда такое же изменение в альбомной ориентации мобильного Android, оно некоторое время начинается с 11, что не должно происходить таким образом.