0

データベースからタイトルと画像を表示する最良の方法は何ですか? 一度に 1 つのデータ行/レコードを表示し、[次へ] ボタンをクリックして次のデータ行/レコードを表示したいだけです。どのビュー コントロールが最適かわかりません。リストビューに関連する例をたくさん見てきました。

ID | タイトル | 画像

1 春の画像 1.blob 2 夏の画像 2.blob 3 冬の画像 3.blob

ログキャット

06-07 04:33:06.213: E/Trace(950): error opening trace file: No such file or directory (2)
06-07 04:33:08.041: D/Insert:(950): Inserting ..
06-07 04:33:08.150: D/AndroidRuntime(950): Shutting down VM
06-07 04:33:08.150: W/dalvikvm(950): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
06-07 04:33:08.171: E/AndroidRuntime(950): FATAL EXCEPTION: main
06-07 04:33:08.171: E/AndroidRuntime(950): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sqlitedemoactivity/com.example.sqlitedemoactivity.SQLiteDemoActivity}: java.lang.NullPointerException
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.os.Looper.loop(Looper.java:137)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread.main(ActivityThread.java:5041)
06-07 04:33:08.171: E/AndroidRuntime(950):  at java.lang.reflect.Method.invokeNative(Native Method)
06-07 04:33:08.171: E/AndroidRuntime(950):  at java.lang.reflect.Method.invoke(Method.java:511)
06-07 04:33:08.171: E/AndroidRuntime(950):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-07 04:33:08.171: E/AndroidRuntime(950):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-07 04:33:08.171: E/AndroidRuntime(950):  at dalvik.system.NativeStart.main(Native Method)
06-07 04:33:08.171: E/AndroidRuntime(950): Caused by: java.lang.NullPointerException
06-07 04:33:08.171: E/AndroidRuntime(950):  at com.example.sqlitedemoactivity.SQLiteDemoActivity.onCreate(SQLiteDemoActivity.java:37)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.Activity.performCreate(Activity.java:5104)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
06-07 04:33:08.171: E/AndroidRuntime(950):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
06-07 04:33:08.171: E/AndroidRuntime(950):  ... 11 more
06-07 04:33:15.283: I/Process(950): Sending signal. PID: 950 SIG: 9

私のコード

private void setNewData(int position){
        textview1 = (TextView)findViewById(R.id.textview1);
        List<Contact> contacts = db.getContact(position) ;
        for (Contact cn : contacts) {
            String log = "ID:" + cn.getID() + " Name: " + cn.getName();
            // Writing Contacts to log
            Log.d("Name: ", log); 
            textview1.setText(cn.getName());

        }
    }

ボタンクリックコード

button1.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v) {
                    //increment the counter (which is keeps track of what position we are displaying.
                    counter = counter+1;
                    //call method to update the view with the next items position
                    setNewData(counter);
                }

            });
4

1 に答える 1

0

データベースからすべてのアイテムを配列にロードします。次に、簡単なコードを使用して、現在表示しているアイテムを追跡します。ボタンがクリックされると、次のアイテムのテキスト/画像でビューを更新します。いくつかのサンプル コードを次に示します (これはコンパイルされませんが、アイデアが得られます)。

public class Thing{
    public String imageURL;
    public String text;
}

private List<Thing> myThings;
private int counter=0;
private Button nextButton;

nextButton.setOnClickListener(new OnClickListener() {
        @Override public void onClick(View v) {
            //increment the counter (which is keeps track of what position we are displaying.
            counter = counter+1;
            //call method to update the view with the next items position
            setNewData(counter);
        }
    });


 private void setNewData(int position){
    /*
     * Get the data from the list of the new position
     */
    String image = myThings.get(position).imageURL;
    String text = myThings.get(position).text;
    myTextView.setText(text);
    myImageView.loadImage(image);
}
于 2013-06-06T03:52:47.340 に答える