【问题标题】:Android : take Data in ListViewAndroid:在 ListView 中获取数据
【发布时间】:2018-08-01 14:31:36
【问题描述】:

实际上在我的项目中,我被阻止了。所以,我第一次询问 Stackoverflow 社区。我是开发新手。

所以,我有一个带有我的数据的 MySql,我不想在我的应用程序中看到用户的项目。

为此,我有这个:

public class SuccessActivity extends AppCompatActivity {


    public static final int CONNECTION_TIMEOUT = 10000;
    public static final int READ_TIMEOUT = 15000;
    private ListView listView;

    protected String meubles[] = new String[100];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_success);

        Intent intent = getIntent();
        String id = intent.getStringExtra("id");

        this.listView = (ListView) findViewById(R.id.liste);


        new SuccessActivity.Recup().execute(id);

    }



    //PRIVATE CLASSE POUR AFFICHER LES MEUBLES
    private class Recup extends AsyncTask<String, String, String> {
        HttpURLConnection conn;
        URL url = null;

        @Override
        protected String doInBackground(String... params) {
            try {

                //url d'ou reside mon fichier php
                url = new URL("http://opix-dev.fr/mytinyhomme/personne/afficher.meuble.php");

            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "exception";
            }
            try {
                // parametrage du  HttpURLConnection pour recevoir et envoyer des donner à mysql
                conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(READ_TIMEOUT);
                conn.setConnectTimeout(CONNECTION_TIMEOUT);
                conn.setRequestMethod("POST");

                // setDoInput and setDoOutput method depict handling of both send and receive
                conn.setDoInput(true);
                conn.setDoOutput(true);

                // Append parameters to URL
                Uri.Builder builder = new Uri.Builder()
                        .appendQueryParameter("id", params[0]);
                String query = builder.build().getEncodedQuery();


                // Open connection for sending data
                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(query);
                writer.flush();
                writer.close();
                os.close();
                conn.connect();

            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                return "exception";
            }

            try {

                int response_code = conn.getResponseCode();

                // Check if successful connection made
                if (response_code == HttpURLConnection.HTTP_OK) {

                    // Read data sent from server
                    InputStream input = conn.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                    StringBuilder result = new StringBuilder();
                    String line;

                    while ((line = reader.readLine()) != null) {
                        result.append(line);
                    }

                    // Pass data to onPostExecute method
                    return (result.toString());

                } else {

                    return ("unsuccessful");
                }

            } catch (IOException e) {
                e.printStackTrace();
                return "exception";
            } finally {
                conn.disconnect();
            }


        }

        @Override
        protected void onPostExecute(String resulta) {

            //this method will be running on UI thread
            if (resulta.equalsIgnoreCase("false")) {


            } else if (resulta.equalsIgnoreCase("exception") || resulta.equalsIgnoreCase("unsuccessful")) {


            } else {
                try {


                    JSONArray nom = new JSONArray(resulta);
                    System.out.println(nom);

                    String meubles[] = new String[100];

                    for (int i = 0; i < nom.length(); i++){
                        JSONObject jsonobject = nom.getJSONObject(i);

                        meubles[i]= jsonobject.getString("nom");
                        System.out.println(jsonobject);

                        System.out.println(meubles);
                        item.setText( meubles[i]);



                    }
                        System.out.println(meubles);


                } catch (JSONException e) {
                    e.printStackTrace();
                }


            }
        }

    }
}

file.php 是正确的,因为JSONArray in System.print 没问题 但是我尝试使用一些 TextView 在最后显示板,但我没有成功。

我如何使用meuble[0] , meuble[1], meuble[2](it's board of String name of items) in a ListView ?

【问题讨论】:

    标签: android mysql xml database


    【解决方案1】:

    这是在列表视图中显示数据所需执行的操作,

    修改 onPostExecute() 方法:

     @Override
            protected void onPostExecute(String resulta) {
    
                //this method will be running on UI thread
                if (resulta.equalsIgnoreCase("false")) {
    
    
                } else if (resulta.equalsIgnoreCase("exception") || resulta.equalsIgnoreCase("unsuccessful")) {
    
    
                } else {
                    try {
    
    
                        JSONArray nom = new JSONArray(resulta);
                        System.out.println(nom);
    
                        String meubles[] = new String[100];
    
                        for (int i = 0; i < nom.length(); i++){
                            JSONObject jsonobject = nom.getJSONObject(i);
    
                            meubles[i]= jsonobject.getString("nom");
                            System.out.println(jsonobject);
    
                            System.out.println(meubles);
    
                        }
    
                        ArrayAdapter<String> listAdapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,meubles);
    
                        listView.setAdapter(listAdapter);
    
    
    
                            System.out.println(meubles);
    
    
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
    
    
                }
            }
    

    添加了什么?

    您需要一个适配器来在列表视图中显示项目。您可以通过扩展 arrayadapter 来创建自定义适配器类,也可以使用 arrayadapter 而无需自定义它,如图所示。

    添加代码:

    创建一个新的适配器,

    ArrayAdapter listAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);

    为您的列表视图设置适配器,

    listView.setAdapter(listAdapter);

    【讨论】:

    • 好的,感谢语法,现在可以使用了!感谢开发者'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多