использование массива строк из базы данных SQL для декодирования списка просмотра jSon - PullRequest
1 голос
/ 15 февраля 2012

Привет я пытался заполнить listView из базы данных SQL, я получаю ошибки, пытаясь связать массив строк с адаптером массива, ошибки в строках,

setListAdapter (new ArrayAdapter<String>(this, R.layout.list_item, STORYLIST));

и

ListView menulist = getListView();

вот мой код, любая помощь будет принята с благодарностью

    public class MainActivity extends Activity {
/** Called when the activity is first created. */

static String result = "";
InputStream is = null;
static String storyNames = "";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    setListAdapter (new ArrayAdapter<String>(this, R.layout.list_item, STORYLIST));

    ListView menulist = getListView();
    menulist.setTextFilterEnabled(true);

    menulist.setOnItemClickListener(new OnItemClickListener() {    
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      

            if  (position == 0) {
            //  Intent buttona = new Intent(view.getContext(), OneActivity.class);
              //  startActivity(buttona);
            }

            if (position == 1) {
             //   Intent buttonb = new Intent(view.getContext(), TwoActivity.class);
             //   startActivity(buttonb);
            }

            if (position == 2) {
               // Intent buttonc = new Intent(view.getContext(), ThreeActivity.class);
               // startActivity(buttonc);
            }

            if (position == 3) {
                //Intent buttond = new Intent(view.getContext(), FourActivity.class);
                //startActivity(buttond);
            }

        }

});




    //end of oncreate()    
}

public void returnJson(){

    //TextView one = (TextView) findViewById(R.id.textView1);

    try{
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php");

            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

    }catch(Exception e) {
    //  one.setText("error3");
    }

    try{


        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);                      
        StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

    }catch(Exception e) {
    //  one.setText("error2");          
        }

    try{
        JSONArray jArray = new JSONArray(result);
        String storyNames = "";
        for(int i = 0;i<jArray.length();i++){
                storyNames += jArray.getJSONObject(i).getString("story_name") + "\n"; 
        }
    //  one.setText(storyNames);

    }
    catch(JSONException e) {
    //  one.setText("error1");

    }
        return;


//end of returnJson()   
}
String[] STORYLIST = new Gson().fromJson(result,String[].class);

//end of class body    
}

iv изменил это на это, все еще не работает

    public class MainActivity extends ListActivity {
/** Called when the activity is first created. */

static String result = "";
InputStream is = null;
static String storyNames = "";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView menulist = getListView();
    setListAdapter (new ArrayAdapter<String>(this, R.layout.list_item, STORYLIST));

    menulist.setTextFilterEnabled(true);


    menulist.setOnItemClickListener(new OnItemClickListener() {    
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      

            if  (position == 0) {
            //  Intent buttona = new Intent(view.getContext(), OneActivity.class);
              //  startActivity(buttona);
            }

            if (position == 1) {
             //   Intent buttonb = new Intent(view.getContext(), TwoActivity.class);
             //   startActivity(buttonb);
            }

            if (position == 2) {
               // Intent buttonc = new Intent(view.getContext(), ThreeActivity.class);
               // startActivity(buttonc);
            }

            if (position == 3) {
                //Intent buttond = new Intent(view.getContext(), FourActivity.class);
                //startActivity(buttond);
            }

        }

});




    //end of oncreate()    
}

public void returnJson(){

    //TextView one = (TextView) findViewById(R.id.textView1);

    try{
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://10.0.2.2/textures_story_list.php");

            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

    }catch(Exception e) {
    //  one.setText("error3");
    }

    try{


        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);                      
        StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

    }catch(Exception e) {
    //  one.setText("error2");          
        }

    try{
        JSONArray jArray = new JSONArray(result);
        String storyNames = "";
        for(int i = 0;i<jArray.length();i++){
                storyNames += jArray.getJSONObject(i).getString("story_name") + "\n"; 
        }
    //  one.setText(storyNames);

    }
    catch(JSONException e) {
    //  one.setText("error1");

    }
        return;


//end of returnJson()   
}
String[] STORYLIST = new Gson().fromJson(storyNames,String[].class);

//end of class body    
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Сначала получите просмотр списка ListView menulist = getListView (); затем установите адаптер setListAdapter (новый ArrayAdapter (this, R.layout.list_item, STORYLIST));

0 голосов
/ 15 февраля 2012

изменить вызов для "setListAdapter (новый ArrayAdapter (this, R.layout.list_item, STORYLIST));"после того, как вы заполнили массив STORYLIST ... при вызове setlistadapter в oncreate STORYLIST по-прежнему пуст (null) ..

...