آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

OmidAhmadian  12 سال پیش  11 سال پیش
+17 0

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

0 0
ممنون از آموزشت :) (12 سال پیش)
0 0
نمیشه اسمش رو گذاشت اموزش فقط درج کد بود :) (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
OmidAhmadian  12 سال پیش
+6 0

قسمت اول کد های مربوط به 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);
0 0
نمی دونم چرا کدها یه مقدار با مشکل چاپ می شند اگر متوجه نشدید اخرش سورس کد رو کامل می زارم براتون (12 سال پیش)
پاسخ به سوال 
OmidAhmadian  12 سال پیش
+4 0

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

پاسخ به سوال 
OmidAhmadian  12 سال پیش
+4 0

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

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

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