0

このクラステンプレートを使用して、配列リストにアイテムを追加しようとしています。

public class Template {
public String username;
public String email;

}

コード全体は次のとおりです。

public void JsonToArrayList(JSONArray myJsonArray) throws JSONException
{
    ArrayList<Template> listItems = new ArrayList<Template>();
    JSONObject jo = new JSONObject();
    Template tem = new Template();
    ListView lv = (ListView) findViewById(R.id.listView1);

    for(int i = 0; i<myJsonArray.length(); i++)
    {
        jo = myJsonArray.getJSONObject(i);
        tem.username = jo.getString("username");
        tem.email = jo.getString("user_email");

        listItems.add(tem);         
        Log.e("Ninja Archives", tem.username);

    }
    // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
    ArrayAdapter<Template> arrayAdapter = new ArrayAdapter<Template>(this,android.R.layout.simple_list_item_1, listItems);
    lv.setAdapter(arrayAdapter); 

}   

問題は、リストビューに素敵なユーザー名とメール文字列を入力する代わりに、次のようなアイテムを入力することです。

com.android.ninjaarchives。Template @ 40585690

どこかで道に迷ってしまったと思いますが、今は何年も前から色んなことをやっていてどこにも行けません。誰かが私を正しい方向に向けることができますか?

助けてくれてありがとう。

注:コードで何が起こっているのかよくわかりません。正しく貼り付けられていないようです。

4

3 に答える 3

4

以下のコードを使用すると、解決策になる可能性があります

public void JsonToArrayList(JSONArray myJsonArray) throws JSONException
{
    ArrayList<Template> listItems = new ArrayList<Template>();
    JSONObject jo = new JSONObject();
    Template tem = new Template();
    ListView lv = (ListView) findViewById(R.id.listView1);

    String listItemString[] = new String[myJsonArray.length];

    for(int i = 0; i<myJsonArray.length(); i++)
    {
        jo = myJsonArray.getJSONObject(i);
        tem.username = jo.getString("username");
        tem.email = jo.getString("user_email");
       listItemString[i]  = tem.username +" - " + tem.email; // u can change it according to ur need.
        listItems.add(tem);         
        Log.e("Ninja Archives", tem.username);

    }
    // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listItemString);
    lv.setAdapter(arrayAdapter); 

}

ただし、BaseAdapter を拡張してカスタム アダプターを作成し、getView メソッドでlistItem の処理を​​行う方がよいでしょう。

于 2013-01-22T15:01:56.103 に答える
1

Base を拡張するクラスを取る

    private class CustomAdapter extends BaseAdapter
{
    LayoutInflater inflater;
    public CustomAdapter(Context context)
    {
        inflater = LayoutInflater.from(context);
    }

    public int getCount()
    {
        return listItems.size();
    }

    public Object getItem(int position)
    {
        return listItems.get(position);
    }

    public long getItemId(int position)
    {
        return position;
    }

    public View getView(final int position, View convertView,ViewGroup parent)
    {
        //if(convertView==null)
        //convertView = inflater.inflate(R.layout.listlayout, parent, false);
        Template data = (Template) getItem(position);
        TextView v=new TextView(context);
        v.setText(data.name);
        return v;
    }
}

アダプターをリストビューに設定します

lv.setAdapter(new CustomAdapter(this));
于 2013-01-22T15:03:44.333 に答える
0

この場合、(ArrayAdapter から拡張された) カスタム アダプターを使用し、getView メソッドをオーバーライドして、カスタム レイアウトでユーザー名と電子メールを表示する必要があります。

于 2013-01-22T15:02:42.603 に答える