انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت لیست ویو برای کتاب داستان (ذر برنامه نویسی اندروید)

ساخت لیست ویو برای کتاب داستان (ذر برنامه نویسی اندروید)

#6


با سلام و عرض ادب خدمت استاد گرامی و همه ی دوستان.باز هم نیازمند یاری سبزتان هستیم.دوستان در ساخت یک لیست ویو دچار مشکل شدم لطفا هر کسی توانست کمک کند ممنون.می خواهم یک است از عنوان 12 داستان بسازم که با زدن کلیدی در یک فهرت وارد این لیست بشودو بعد هم با کلیک بر روی هر ایتم به یک اکتیویتی دیگر برود که اسکرول ویو است و یک تکست ویو دارد و با دستور ایف الس ایف تعیین کند که با امدن هر کدام از اعداد یک تا دوازده داستان متناسب با آن را در تکست ویو نمایش دهد .لطفا به کد ها توجه کنید و راهنمایی کنید.
قبل از همه فایل stringکه 12عنوانی که قرار است در لیست ویو نمایش داده شود در ان وجود دارد.
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">داستان های کهن(سیمرغ)</string>
    <string name="action_settings">Settings</string>
    <string name="title_bahaneh2">Bahaneh2</string>
    <string name="fehrest">فهرست</string>
    <string name="btn">در باره ی من</string>
    <string name="exit">خروج</string>
    <string name="simorgh">سیمرغ</string>
    <string name="manabe">منابع</string>
    <string name="about">\nبرنامه نویس:عطا درویش نیا\nایمیل:atadarvishnya@yahoo.com\n\nنظرات و پیشنهادات خود را به ایمیلم ارسال کنید.\nاگر دوست دارید کتابی را در گوشی خود داشته باشید یا هر نظر و پیشنهادی دارید حتما به ایمیلم بفرستید تا در اسرع وقت در اختیار شما عزیزان قرار گیرد.\nدر پناه حق.</string>
    <string name="moghadame">مقدمه</string>
    <string name="bahaneh">بهانه ی مرغان</string>
    <string name="eradeh">اراده مرغان برای رفتن به درگاه سیمرغ</string>
    <string name="vadi">هفت وادی</string>
    <string name="residan">رسیدن مرغان به درگاه سیمرغ</string>
    <string name="source">\nسیمرغ\nکتاب داستان های کهن\nاز مجموعه کتاب های 72 دقیقه ای \nتالیف :فریدالدین محمد بن ابراهیم نیشابوری</string>
    <string name="moghadameh">مقدمه\nآفرین جان افرین پاک را \n               آن که جان بخشید و ایمان خاک را\nمنطق الطیر یا مقامات طیور عطار نیشابوری یکی از برجسته ترین و زیبا ترین آثار عرفانی است که در قالب تمثیل و داستان بسیاری از مسائل عرفانی را به زبان ساده بیان کرده است.\nاین سفر مرغان به سوی سیمرغ و ماجراهایی است که در راه برای آنها اتفاق می افتد.در این سفر ،هدهدکه پیکی از سوی پروردگار است ،رهبری پرندگان رابه عهده می گیرد و انها را برای رسیدن به سیمرغ،یعنی همان جود حق راهنمایی می کند.\nعطار در این کتاب پرندگانی را توصیف می کند که هر کدام نشان دهنده ی یکی از صفات انسان هستند و در وصف انها از اطلاعات عامیانه و داستان های دینی استفاده می کند.\nهر داستانی که در منطق الطیر آورده شده،حاصل ذوق روایت کنندگان این حکایت هاست که در طول قرن ها به آن پرداخته اند و هر کس با شیوه ی خود ،رنگی به آن بخشیده تا وقتی که به دست هنرمند بزرگی چون عطار رسیده و او ان را به صورت یکی از شاهکارهای جهانی در اورده است .\nدر این کتاب سعی گردیده است اشعار زیبای منطق الطیر به نثر ساده وروان آورده شود .\nامید است مورد پسند علاقه مندان قرار گیرد.</string>
    <string name="string_key_1">جمع شدن مرغان</string>
    <string name="string_key_2">عذر بلبل</string>
    <string name="string_key_3">عذر طوطی</string>
    <string name="string_key_4">عذر طاووس</string>
    <string name="string_key_5">عذر مرغابی</string>
    <string name="string_key_6">عذر کبک</string>
    <string name="string_key_7">عذر هما</string>
    <string name="string_key_8">عذر باز</string>
    <string name="string_key_9">عذر بوتیمار</string>
    <string name="string_key_10">عذر جغد</string>
    <string name="string_key_11">عذر صعوه</string>
    <string name="string_key_12">بهانه ی مرغان دیگر</string>
    
</resources> 
عنوان هایی که می خواهم در لیست نمایش داده شود به ترتیب از string_key_1تا 12 در استرینگ نوشته شده است.همچنین در یک xmlدیگر که در پوشه valueساختم متن هر داستان را که می خواهم بعد از کلیک بر روی هر ایتم نمایش داده شود نوشتم.
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <string name="bh1">مجمعی کردند مرغان جهان\nآنچه بودند آشکارا و نهان\nجمله گفتنداین زمان در روزگار\nنیست خالی هیچ شهر از شهریار\nچون بود کاقلیم مارا شاه نیست؟\nبیش از این بی شاهی بودن راه نیست.\nروزی همه ی مرغان جمع شدند تا به کمک یکدیگر پادشاهی را برای خود انتخاب کنند.هدهد نیز که از نبود پادشاهی شایسته آشفته بود،به جمع مرغان امد و گفت ای مرغان من قاصدی از غیب و پیام رسان خداوند هستم و از اسرار الهی باخبرم.همچنین سالها همدم و همراه حضرت سلیمان بوده ام و با او به سفرهای زیادی رفته و تجربه های بسیار کسب کرده ام.\n\n ای پرندگان من ،پادشاه خود را شناخته ام ولی رفتن و رسیدن به او فقط با کمک شماامکان پذیر است.اگر مرا همراهی کنید شما هم می توانید محرم اسرار او باشید.\nپس از ان هدهد به توصیف پادشاه پرداخت و گفت ای، مرغان زیبایی او به حدی است که هیچ کس نمی تواند آن را درک کند.هر کس او را بشناسد ،در راهش جان می دهد.شما نیز اگر بخواهید به او برسید،باید از جانتان بگذرید.\n\nوقتی حرف های هدهد تمام شد ،مرغان با خوشحالی مشتاق دیدن پادشاهی شدند که هدهد توصیف کرده بود.\n\nهدهد وقتی اشتیاق مرغان را دید ،ادامه داد و گفت نام ان  پادشاه سیمرغ است و در کوه قاف زندگی می کند؛از از هر کس و هر چیزی به ما نزدیکتر است،ولی ما از او دوریم.او پادشاهی است که حتی عقل و وهم و خیال هم نمی تواند او را درک کند.\nاما هر کس توفیق دیدار او را نداردچرا که طی کردن راه و رسیدن به او بسیار سخت است،ولی اگر کسی این راه سخت و دشوار را طی کند و و در این راه جانش را از دست بدهد،هزاران جان به او می دهد.\n\nوقتی هدهد حرف هایش را به اینجا رساند ،برای بی قرار کردن مرغان گفت  در ابتدای آفرینش شبی سیمرغ از آسمان می گذشت که پری از وی جدا شدو بر روی زمین افتاد.با افتادن این پر ،شور و هیجان بسیاری به وجود امد.هر کس زیبایی آن را به گونه ای تعبیر کردو به ان سرگرم شد.\n\nای مرغان اگر نقشی از آن پر سیمرغ نمایان نشده بود ، هیچ خلقت و آفرینشی به وجود نمی آمد.\nای پرندگان ، بدانید که همه ی آفریدگان نشانه ای از قدرت او هستند.\nسپس گفت\nهر که اکنون از شما مرد رهید\nسر به راه آریدو پا اندر نهید.\nهمه ی مرغان مشتاق دیدار سیمرغ بودند ،ولی وقتی دشواری های راه را شنیدند هر یک بهانه ای اوردند و عذر خواستند.</string>
    <string name="bh2">عذر بلبل\n\nبلبل شیدا در آمد مست. مست \nوز کمال عشق نه نیست و نه هست\n\nمعنی یی در هر هزار آواز داشت\nزیر هر معنی جهانی راز داشت\n</string>
    <string name="bh3">عذر طوطی\n\nطوطی آمد با دهانی پر شکر\nدر لباس فستقی با طوق زر\n\n</string>
    <string name="bh4">عذر طاووس\n\nبعد از آن طاووس آمد زرنگار \nنقش پرش صد چه بلکه هزار\n\nچون عروسی جلوه کردن ساز کرد\nهر پر او جلوه ای آغاز کرد\n\n</string>
    <string name="bh5">عذر مرغابی\n\nبط به صد پاکی برون امد ز آب\nدر میان جمع با خیر الثیاب\n\n</string>
    <string name="bh6">عذر کبک\n\nکبک بس خرم خرامان در رسید\nسر کش و سر مست از کان در رسید\n\n</string>
    <string name="bh7">عذر هما\n\nپیش جمع امد همای سایه بخش\nخسروان را ظل او سرمایه بخش\n\n</string>
    <string name="bh8">عذر باز\n\nباز ،پیش جمع آمد سرفراز\nکرد از سر معانی پرده باز\n\n</string>
    <string name="bh9">عذر بوتیمار \n\nپس در آمد زود بوتیمار پیش\nگفت ای مرغان من و تیمار خویش/n/nبر لب دریاست خوشتر جای من\nنشنود هرگز کسی آوای من\n\n</string>
    <string name="bh10">عذز جغد\n\nکوف آمد پیش چون دیوانه ای\nگفت من بگزیده ام ویرانه ای \n\n</string>
    <string name="bh11">عذر صعوه\n\nصعوه امد دل ضعیف و تن نزار\nپای تا سر همچو آتش بی قرار\n\n</string>
    <string name="bh12">بهانه ی دیگر مرغان\n\nبعد از آن مرغان دیگر سرسر به سر\nعذر ها گفتند مشتی بی خبر\n\n</string>
    
</resources> 
چند باتن در یک اکتیویتی به اسم Fehrestوجود دارد که می خواهم با کلیک بر روی یکی از آنها به اسم بهانه ی مرغان به لیست مورد نظرم که شامل عنوان داستان ها است وارد شود.
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#33cc00" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="@string/fehrest"
        android:textColor="#ff0000"
        android:textSize="24sp" />

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="32dp"
        android:background="#0033cc"
        android:text="@string/moghadame"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Button
        android:id="@+id/button5"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/button1"
        android:layout_marginTop="26dp"
        android:background="#cc00ff"
        android:text="@string/bahaneh"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Button
        android:id="@+id/bera"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:background="#663300"
        android:text="@string/eradeh"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Button
        android:id="@+id/bresidan"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/bvadi"
        android:layout_marginTop="27dp"
        android:background="#ff0000"
        android:text="@string/residan"
        android:textColor="#000000"
        android:textSize="20sp" />

    <Button
        android:id="@+id/bvadi"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/bera"
        android:layout_marginTop="27dp"
        android:background="#ffcc66"
        android:text="@string/vadi"
        android:textColor="#000000"
        android:textSize="20sp" />

</RelativeLayout> 
در Fehrest.javaکد های کلید مود نظرم را نوشتم(b5) در صورت کلیک باید یک اکتیویتی به اسم Bahaneh باز شود که لیست ویو مورد نظرم که شامل عنوان داستان ها است در ان قرار دارد.ولی متاسفانه وقتی روی این باتن کلیک میکنم لیست ویو را نمی اورد و در همان اکتیویتی می ماند.
کد های Fehrest.java
کد پی‌اچ‌پی:
package com.ata.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class 
Fehrest extends Activity {

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
// TODO Auto-generated method stub
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.fehrest);
        
        
Button b4=(Button)findViewById(R.id.button1);
        
b4.setOnClickListener(new OnClickListener() {
            
            @
Override
            
public void onClick(View v) {
                
//TODO Auto-generated method stub
                
startActivity(new Intent(Fehrest.this,Moghadameh.class));
            }
        });
        
Button b5 = (ButtonfindViewById(R.id.button5);
        
b5.setOnClickListener(new OnClickListener() {
            
            @
Override
            
public void onClick(View v) {
            
//TODO Auto-generated method stub
            
startActivity(new Intent(Fehrest.this,Bahaneh.class));
        }
    });
    }


خب دوستان از اینجا به بعد شبیه مراحل ساخت لیست ویو سفارشی است که در این سایت آموزش داده شده است یعنی دقیقا با توجه به همین اموزش ساختم ولی با این تفاوت که به جای MainActivity اسم اکتیویتی که می خواهم لیست در ان قرار گیرد Bahaneh است و به جای SecoundActivity اسم اکتیویتی دوم را که با کلیک بر روی هر ایتم باید وارد ان شویم را Bahaneh2 گذاشتم.
خب در اینجا کدهای سه xml مربط به bahaneh و bahaneh2 و list_item را قرار می دهم.
bahaneh
xmlمتناظر با Bahaneh.java
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout> 
bahaneh2
xml متناظر با Bahaneh2.java
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

</ScrollView> 
list_item
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

         <TextView
            android:id="@+id/textView1"
            android:layout_width="240dp"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="15sp"
            android:text="Text_1" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_gravity="end"
            android:padding="10dp"
            android:src="@drawable/s" />
        
        </LinearLayout>
        
    </LinearLayout> 
لازم به ذکر است که این لیست ویو دارای یک عکس ثابت است که ان را در همین جاتعیین کرده ام و یک تکست ویو دارد که باید متن عنوان داستان ها یعنی 12عنوان متفاوت که در استرینگ تعیین کرده ام در ان قرار گیرد.
کدهای Bahanea.java
کد پی‌اچ‌پی:
package com.ata.test;

import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class 
Bahaneh  extends ListActivity {
    
    public 
ListView lv;
    public 
String number_of_keys;
    public 
String[] my_items = {"key_1",
                                  
"key_2",
                                  
"key_3",
                                  
"key_4",
                                  
"key_5",
                                  
"key_6",
                                  
"key_7",
                                  
"key_8",
                                  
"key_9",
                                  
"key_10",
                                  
"key_11",
                                  
"key_12"
                                 
};

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.bahaneh);
        
        
setListAdapter(new MyAdapter(this
                       
android.R.layout.simple_list_item_1
                       
R.id.textView1,
                       
my_items));    
        
        
lv getListView();
        
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @
Override
            
public void onItemClick(AdapterView<?> parent, final View view,
                int position, long id) {                        
                Intent i = new Intent(getApplicationContext(), Bahaneh2.class);
                number_of_keys = String.valueOf(position+1); 
                i.putExtra("key_number", number_of_keys);
                startActivity(i);    
            }

        });
    }

    
    private class MyAdapter extends ArrayAdapter<String>{

        public MyAdapter(Context context, int resource, int textViewResourceId,
                String[] strings) {
            super(context, resource, textViewResourceId, strings);
            // TODO Auto-generated constructor stub
        }
        
        @SuppressLint("ViewHolder") @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.list_item, parent, false);
            
            String stringName = "string_key_" + String.valueOf(position+1); 
            int string_res_ID = getResources().getIdentifier(stringName,"string",getPackageName());
            String my_string = getResources().getString(string_res_ID);
            TextView tv = (TextView) row.findViewById(R.id.textView1);
            tv.setText(my_string);
            
            return row;
        }
        
        
    }
    


مشکل اصلی من این است که با کلیک کردن بر روی button مورد نظرم اصلا اتفاقی نمی افتد در صورتی که انتظار دارم یک لیست از عنوان داستان ها نمایش داده شود و نمی دانم مشکل از کجاست .لطفا کمک کنید.
در آموزشی که در این سایت قرار دارد با کلیک بر روی هر آیتم از لیست ویو شماره آن ایتم به SecoundActivity فرستاده می شود و به کاربر نمایش داده می شود .به این فکر می کردم که با یک دستور if _else if تعیین کنم که با که در صورت آمدن هر یک از اعداد 1 تا 12 متن داستان متناسب با ان یعنی bh1-bh12را به تکست ویوی موجود در bahaneh2فراخوانی کند یعنی اگر کاربر ایتم اول را کلیک کرد متن داستان bh1را فراخوانی کند و ...
Bahaneh2.java
کد پی‌اچ‌پی:
package com.ata.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class 
Bahaneh2 extends Activity {

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.bahaneh2);
        
        
Bundle extras getIntent().getExtras();
        if (
extras != null) { 
دوستان عزیز بر نامه ی eclipsهیچ خطا یا هشداری را برای این کدها نمی دهد.لطفا هر کس مشکل را پیدا کرد یا نحوه ی نوشتن دستور if-else if مورد نطرم را پیدا کرد کدهای صحیح ان را قرار دهد.با تشکر از توجه تان.

 
پاسخ


پیام‌های این موضوع
RE: ساخت لیست ویو برای کتاب داستان (ذر برنامه نویسی اندروید) - توسط atadarvishnya - ۱۳۹۳/۱۱/۱۶, ۰۴:۰۸ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان