Here is My GridView implement for android application. For Program First time it Work well.But after making some Scrolling Up and Down My problem is when in gridview i scroll it some time put wrong textview in unexpected position.
My Source Code For GridView Adapter is Following.
@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;
}
}
Here is my Main xml file
<?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>
i put same main.xml file in res/layout-land for Landscape mode .
and i also add this line in my AndroidManifest file for handle changes in orientation
android:configChanges="orientation"
and i also implement when we click any item at that position that TextView gone for invisible here is code for that.
@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());
}
}
this function work well but fail for some time after making some orientation changes in my Emulator Using Ctrl+F11 Keys. Here is my Inflater View xml file.
<?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>
Here i attach Reference Image of my demo application for problem i Get.
Look at First image when i Scroll up and down value of Textview interchange Unexpected
and when same change in landscape view of android mobile it some time start from 11 that should not happen in such manner.