9

これは長いメッセージかもしれませんが、stackoverflowユーザー全員に明確な質問をしたいと思います。私がしたことは、グリッドビューにバインドされているクラス内に配列の静的文字列を作成することです

class ParserArrayList {
       //some declaration and codes here
      private String [] imageCaptionId = {
        "My First Medal",
        "You ...",
        "The ...",
        "Gimme ...",
        "A ...",
        "Seven ...",
        ".....City",
        ".... Madness",
        "Loyal...",
        ".....",
        "...",
        "Champion..."
        };
}

そして、それをパブリッククラスに手動でバインドするImageAdapterはBaseAdapterを拡張します

public class ImageAdapter extends BaseAdapter{
//some declaration and variables here
   public View getView(int position, View convertView, ViewGroup parent) {
        View v;

        ParserArrayList arrayImage = new ParserArrayList();
        String[] imagetext = arrayImage.getImageCaptionId(); 
        if (convertView == null) {
        //some stuff here
        }
//some stuff here
return v;
}

ご覧のとおり、ParserArrayListの「imageCaptionId」を呼び出して、「imagetext」を宣言する別の配列文字列に送信します。

配列'imageCaptionId'は、このコードを使用して試したローカルデータベースに基づいている必要があることがわかるまで、すべて正常に機能しますが、終了できません。

class ParserArrayList {
//added this code
public SQLiteAdapter sqlAdapter;
//and this one
public void showData(){
    sqlAdapter = new SQLiteAdapter(this);

    String str = "Select dTitle from achievement_tb where version =0 order by ID ASC;";

    sqlAdapter.openToRead();

    Cursor c =sqlAdapter.read(str);

    sqlAdapter.close();
}
}

最初:配列にバインドする方法がわかりません

2番目:ParserArrayList内に作成しましたが、 コンストラクターSQLiteAdapter(ParserArrayList)が未定義であるというエラーが表示されます(これは既に実行されています)

助けてくれませんか

編集 これは私が達成しようとしていることまたは私の論理です

私のParserArrayListクラスで、このコードを追加しようとしています(これが正しいかどうかはわかりません)

    public String[] showImageCaption(){
    String imageCaptionIds [];
    sqlAdapter = new SQLiteAdapter(mContext);

    String str = "Select dTitle from achievement_tb where version =0 order by ID ASC;";

    sqlAdapter.openToRead();

    Cursor c =sqlAdapter.read(str);     
    imageCaptionIds [c.getCount()];

    sqlAdapter.close();
    return imageCaptionIds;
}

構文エラーというエラーが表示されます。「AssignmentOperatorExpression」を挿入して式を完成させます

今私のImageAdapterはBaseAdapterを拡張しますここに私のコードがあります

 public View getView(int position, View convertView, ViewGroup parent) {
        View v;
        ParserArrayList arrayImage = new ParserArrayList(mContext);
        newArrayList2 = arrayImage.getArraylist();
        **String[] imagetext = arrayImage.showImageCaption();** 
        if (convertView == null) {  // if it's not recycled, initialize some attributes
             LayoutInflater li = getLayoutInflater();
             v = li.inflate(R.layout.medal_grid, null);
        }
        else
        {
             v = convertView;
        }
        TextView tv = (TextView)
        v.findViewById(R.id.grid_item_label);
        **tv.setText(imagetext[position]);**
        ImageView iv = (ImageView)v.findViewById(R.id.grid_item_image);
        iv.setImageResource((Integer) newArrayList2.get(position));
        return v;
    }

私のロジックは、ParserArrayList内のStringの配列(imageCaptionIdsを返す)にバインドし、textviewに設定することです。

4

1 に答える 1

1

最初の質問はわかりませんが、2番目の質問は簡単です。

Context(またはActivityのようにContextを拡張するクラス)をに渡す必要がありますnew SQLiteAdapter()。これに一致するようにParserArrayListを変更するだけです。

public class ParserArrayList {
    Context mContext;
    ...

    public ParserArrayList(Context context) { 
        mContext = context;
        ... 
    }

    public void showData(){
        sqlAdapter = new SQLiteAdapter(mContext);
        ...
    }
}

アクティビティ内で、おそらくonCreate()を呼び出すだけで、次のようになります。

 ParserArrayList pal = new ParserArrayList(this);

最初の質問に答えようと思います。なぜ文字列配列をに入れなければならないSQLiteDatabaseのですか?はArrayAdapter<String>文字列配列で非常にうまく機能します...なぜこのようなものが機能しないのですか?

public class ImageAdapter extends ArrayAdapter<String> {
    //some declaration and variables here

    public View getView(int position, View convertView, ViewGroup parent) {
        View v;

        String imagetext = getItem(position); // returns the caption at index
        if (convertView == null) {
            //some stuff here
        }

        //some stuff here
        return v;
    }
}

宣言あり:

private String [] imageCaptionId = { ... };
ImageAdapter adapter = new ImageAdapter(this, R.layout.awesome, imageCaptionId);
于 2012-09-04T04:28:19.807 に答える