質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Java

    15822questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4297questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

  • XML

    760questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

ListViewの使い方

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 412

one125

score 36

ListViewを実装したく見本を見ながらコードを書いてみたのですが画面が切り替わってもリストが表示されずに困っています。
どこかおかしいところはありますか?
よろしくお願いします。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="horizontal"
              android:paddingBottom="10dp"
              android:paddingTop="10dp">
    <ImageView
        android:id="@+id/list1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/1"/>
//省略
    <ImageView
        android:id="@+id/list13"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/1"/>
</LinearLayout>
コード
import android.widget.ImageView;
public class ListItem {
    private int ListId;
    private ImageView imageView1;
    private int imageId1;
    private int imageId2;
    private int imageId3;
    private int imageId4;
    private int imageId5;
    private int imageId6;
    private int imageId7;
    private int imageId8;
    private int imageId9;
    private int imageId10;
    private int imageId11;
    private int imageId12;
    private int imageId13;

    public int getImageId1() {
        return imageId1;
    }
    public void setImageId1(int imageId1) {
        this.imageId1 = imageId1;
    }
   //省略
    }
    public int getImageId13() {
        return imageId13;
    }
    public void setImageId13(int imageId13) {
        this.imageId13 = imageId13;
    }
}
コード
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
public class ListArrayAdapter extends ArrayAdapter<ListItem>{
    private LayoutInflater layoutInflater;
    public ListArrayAdapter(Context c, int id, ArrayList<ListItem> listItems){
        super(c, id, listItems);
        this.layoutInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public View getView(int pos, View convertView, ViewGroup parent){
        if (convertView == null){
            convertView = layoutInflater.inflate(R.layout.quiz_list,parent,false);
        }
        ListItem listItem =(ListItem)getItem(pos);
        ((ImageView) convertView.findViewById(R.id.list1)).setImageResource(listItem.getImageId1());
        ((ImageView) convertView.findViewById(R.id.list2)).setImageResource(listItem.getImageId2());
        ((ImageView) convertView.findViewById(R.id.list3)).setImageResource(listItem.getImageId3());
        ((ImageView) convertView.findViewById(R.id.list4)).setImageResource(listItem.getImageId4());
        ((ImageView) convertView.findViewById(R.id.list5)).setImageResource(listItem.getImageId5());
        ((ImageView) convertView.findViewById(R.id.list6)).setImageResource(listItem.getImageId6());
        ((ImageView) convertView.findViewById(R.id.list7)).setImageResource(listItem.getImageId7());
        ((ImageView) convertView.findViewById(R.id.list8)).setImageResource(listItem.getImageId8());
        ((ImageView) convertView.findViewById(R.id.list9)).setImageResource(listItem.getImageId9());
        ((ImageView) convertView.findViewById(R.id.list10)).setImageResource(listItem.getImageId10());
        ((ImageView) convertView.findViewById(R.id.list11)).setImageResource(listItem.getImageId11());
        ((ImageView) convertView.findViewById(R.id.list12)).setImageResource(listItem.getImageId12());
        ((ImageView) convertView.findViewById(R.id.list13)).setImageResource(listItem.getImageId13());
        return convertView;
    }
}
コード
 public void setQuestion() {

        ListView listView = new ListView(this);
        ArrayList<ListItem> items = new ArrayList<>();
        ListItem listItem = new ListItem();
        int[] list1 = new int[100];
        int[] list2 = new int[100];
        int[] list3 = new int[100];
        int[] list4 = new int[100];
        int[] list5 = new int[100];
        int[] list6 = new int[100];
        int[] list7 = new int[100];
        int[] list8 = new int[100];
        int[] list9 = new int[100];
        int[] list10 = new int[100];
        int[] list11 = new int[100];
        int[] list12 = new int[100];
        int[] list13 = new int[100];
        for (int i = 0; i < 100; i++) {
            QuizOpenHelper quizOpenHelper = new QuizOpenHelper(this);
            SQLiteDatabase sqLiteDatabase = quizOpenHelper.getReadableDatabase();
            quizNo = i + 1;
            String sql = "select abc1,abc2,abc3,abc4,abc5,abc6,abc7,abc8,abc9,abc10,abc11,abc12,abc13 from quiz where _id =" + quizNo;
            Cursor cursor = sqLiteDatabase.rawQuery(sql, null);
            cursor.moveToFirst();
            abc1 = cursor.getInt(cursor.getColumnIndex("abc1"));
            abc2 = cursor.getInt(cursor.getColumnIndex("abc2"));
            abc3 = cursor.getInt(cursor.getColumnIndex("abc3"));
            abc4 = cursor.getInt(cursor.getColumnIndex("abc4"));
            abc5 = cursor.getInt(cursor.getColumnIndex("abc5"));
            abc6 = cursor.getInt(cursor.getColumnIndex("abc6"));
            abc7 = cursor.getInt(cursor.getColumnIndex("abc7"));
            abc8 = cursor.getInt(cursor.getColumnIndex("abc8"));
            abc9 = cursor.getInt(cursor.getColumnIndex("abc9"));
            abc10 = cursor.getInt(cursor.getColumnIndex("abc10"));
            abc11 = cursor.getInt(cursor.getColumnIndex("abc11"));
            abc12 = cursor.getInt(cursor.getColumnIndex("abc12"));
            abc13 = cursor.getInt(cursor.getColumnIndex("abc13"));
            switch (abc1) {
                case 1:
                    list1[i] = R.drawable.a1;
                    break;
                case 2:
                    break;
                    list1[i] = R.drawable.a2;
            }
            switch (abc2) {
                case 1:
                    list2[i] = R.drawable.a1;
                    break;
                case 2:
                    list2[i] = R.drawable.a2;
                    break;
      }
//省略
            listItem.setImageId1(list1[i]);
            listItem.setImageId2(list2[i]);
            listItem.setImageId3(list3[i]);
            listItem.setImageId4(list4[i]);
            listItem.setImageId5(list5[i]);
            listItem.setImageId6(list6[i]);
            listItem.setImageId7(list7[i]);
            listItem.setImageId8(list8[i]);
            listItem.setImageId9(list9[i]);
            listItem.setImageId10(list10[i]);
            listItem.setImageId11(list11[i]);
            listItem.setImageId12(list12[i]);
            listItem.setImageId13(list13[i]);
            items.add(listItem);
        }
        ListArrayAdapter listArrayAdapter = new ListArrayAdapter(this ,0, items);
        listView.setAdapter(listArrayAdapter);
    }
}

コード
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • aja

    2017/08/19 19:14 編集

    「見本を見ながらコードを書いてみた」ListViewの見本を見たとは思えませんが...

    キャンセル

  • one125

    2017/08/19 20:20

    一応見本を見ながらやったのですが、知識不足で全くできていないようで、どのように違うのか教えていただけたらありがたいです。

    キャンセル

回答 2

checkベストアンサー

0

下記の箇所にブレークポイントを設置し、デバッグ実行を行い値を確認してください。
・list1の値
・itemsの長さ
・itemsの内容

listView.setAdapter(listArrayAdapter);

また、このコードはSQLやListViewの実装方法がセオリーから外れています。
このコードを見本を見て書いたのであれば、見本が間違っているか、あなたが見本の意図を汲み取れていないかのどちらかが考えられます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/19 20:18

    list1はlist[0]=2130837597それ以外は0。
    itemsの長さと内容とはsize = 0となっていますが、それで解答者様の意図している答えになっていますでしょうか?
    ListView,SQLそれぞれ単体で見本を見て自分なりに組み合わせてみたのですが、、、
    どんなところがセオリーから外れているのでしょうか?教えていただけたらありがたいです。

    キャンセル

  • 2017/08/19 21:21

    itemsの長さが0ということはListViewに表示する物が無いということです。
    理由はListItemの実装が悪いんでしょうね。

    なんでもかんでもActivityに書きすぎです。
    まず、データベースからデータを取り出す処理は専用のクラスを作成してください。
    また、ListViewはビューフォルダーパターンを導入してください。
    さらに、クラス名や変数名がふわっとし過ぎです。役割がわかる名前を付けましょう。

    キャンセル

  • 2017/08/20 13:49

    ありがとうございます。現在データベースからデータを取り出すクラスを作成しているのですがそこでわからないことが出てきてしまいました。ListViewの質問で聞くのもおかしいかと思いますのでここで一度この質問は締め切り、新しい質問をたてたいとおもいます。ありがとうございました。

    キャンセル

0

抽象的な助言ですが、山を登りたいなら一歩ずつ着実に。どうも他の質問を見ていても、ヘリコプターでいきなり山頂に降り立ちたいということばかり考えているように思えますね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    15822questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4297questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

  • XML

    760questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。