بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

آموزش : استفاده از GridVeiw شخصی سازی شده

مدیریت گفتگو
OmidAhmadian 12 سال پیش
آخرین تغییر: 11 سال پیش

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

نظرات

OmidAhmadian 12 سال پیش
نمیشه اسمش رو گذاشت اموزش فقط درج کد بود :)

پاسخ‌ها 3

OmidAhmadian 12 سال پیش

قسمت اول کد های مربوط به 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);

نظرات

OmidAhmadian 12 سال پیش
نمی دونم چرا کدها یه مقدار با مشکل چاپ می شند اگر متوجه نشدید اخرش سورس کد رو کامل می زارم براتون
OmidAhmadian 12 سال پیش

اینم نمای فایله adapter_note.xml است

نظرات

OmidAhmadian 12 سال پیش

اینم از کد مربوط به بخش 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 .

نظرات

javac 12 سال پیش
اینکه اصلا خوده لیست ویو هست :))) هیچ فرقی نداره!
مجتبی یگانه 12 سال پیش
تشکر ، لامصب همین رو نوشتم ، کرش نمیکنه ،ولی not responding میشه ، ببینم داستان چیه !
OmidAhmadian 12 سال پیش
منم همونجا گفتم که مثله لیست ویو ه فقط باید جای لیست ویو از gridview استفاده کرد .
مجتبی یگانه 12 سال پیش
دستتون درد نکنه ، مشکل از جای دیگه بود !
ba2ever 11 سال پیش
سلام .. میشه فایل زیپ این آموزش رو اینجا بزاری دوست عزیز ♥
h_uk2009 11 سال پیش
لطفا مهندس حداقل یا کد بخش ایکس ام ال رو بزارین و یا اینکه خود پروزه رو میزاشتین .. ثواب داره والا ! لطفا کمک کنین ممنون

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .