آموزش : استفاده از GridVeiw شخصی سازی شده
سلام
من با دست کاری کدهای مربوط به بخش لیست ویو اونا رو برای استفاده در GridVeiw آماده کردم .البته تغییراتی که می گم فقط مربوط به تغییر در یکی 2 بخش خیلی کوچیکه و هرکسی با مطالعه دقیقه کد ها ی لیست ویو می تونه اونا رو به هر شکل که می خواد تغییر بده و نیازی به این اموزش نیست ولی به درخواست دوست عزیزمون اقای ALU0075 کد هایی که قبلا برای GridVeiw نوشتم و در برنامم استفاده کردم رو که توی این بخش براتون قرار می دم.
تصویر نهایی، GridVeiw ایی مانند شکل زیر است:

قسمت اول کد های مربوط به MainActivity رو براتون قرار می دم
package ir.colbeh.activity_note_all_in_month_listview;
import ir.colbeh.persiancalendar1393.G;
import ir.colbeh.persiancalendar1393.R;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.GridView;
public class ActivityNoteAllInMonth extends Activity {
public ArrayAdapter adapter;
@Override
protected void onResume() {
super.onResume();
G.currentActivity = this;
setContent();
if (adapter != null) {
adapter.notifyDataSetChanged();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContent();
}
private void setContent() {
setContentView(R.layout.activity_note_all_in_month);
Bundle extras = getIntent().getExtras();
GridView gridC
adapter = new AdapterNoteAllInMonth(G.noteAllInMonth);
gridContent.setAdapter(adapter);
if (adapter != null)
adapter.clear();
Cursor cursor = G.extraDataBase.rawQuery("SELECT ...."), null);
while (cursor.moveToNext()) {
StructNoteAllInMonth note = new StructNoteAllInMonth();
note.title = cursor.getString(cursor.getColumnIndex("note_title"));
note.desc = cursor.getString(cursor.getColumnIndex("note_desc"));
note.day = cursor.getInt(cursor.getColumnIndex("note_day")); note.m
note.year = cursor.getInt(cursor.getColumnIndex("note_year"));
G.noteAllInMonth.add(note);
}
cursor.close();
adapter.notifyDataSetChanged();
}
}
توی این قسمت همه چیز مثله همون لیست ویو ه .فقط بجای
ListView lstToDoListC findViewById(R.id.lstToDoListContent);
از کده زیر استفاده می کنیم:
GridView gridC findViewById(R.id.gridViewNote);
اینم از کد مربوط به بخش AdapterNote :
package ir.colbeh.activity_note_all_in_month_listview;
import ir.colbeh.persiancalendar1393.ActivityInsertNote;
import ir.colbeh.persiancalendar1393.G;
import ir.colbeh.persiancalendar1393.Mobadel;
import ir.colbeh.persiancalendar1393.R;
import java.util.ArrayList;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class AdapterNoteAllInMonth extends ArrayAdapter {
public AdapterNoteAllInMonth(ArrayList array) {
super(G.context, R.layout.adapter_note, array);
}
private static class ViewHolder {
public ViewGroup layoutRoot; //alave bar viewgroup az LinearLayout ham mishe estefade kard
public TextView txtNoteTitle;
public TextView txtNoteDesc;
public TextView txtDate;
public ViewHolder(View view) {
txtNoteTitle = (TextView) view.findViewById(R.id.txtNoteTitle);
txtNoteDesc = (TextView) view.findViewById(R.id.txtNoteDesc);
txtDate = (TextView) view.findViewById(R.id.txtDate);
layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot);
}
public void fill(final ArrayAdapter adapter, final StructNoteAllInMonth item, final int position) {
txtNoteTitle.setText(item.title);
txtNoteDesc.setText(item.desc);
txtDate.setText(item.day + "," + Mobadel.monthOfYearShamsi(item.month));
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(G.currentActivity, ActivityInsertNote.class);
intent.putExtra("daySetted", item.day);
intent.putExtra("monthSetted", item.month);
intent.putExtra("yearSetted", item.year);
G.currentActivity.startActivity(intent);
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructNoteAllInMonth item = getItem(position); if (c null) { c parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
می بینید که تغییره خاصی نداره نسبت به لیست ویو نداره و تغییرات فقط توی بخش fill هست که مربوطه به همون فایله adapter_note.xml .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
