我想从数据库中获取数据并将其显示在listview上。

时间:2016-08-03 06:42:45

标签: android mysql listview

xml文件 第一个文件是设计的xml文件。                            

        <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/listviewtask"/>

    </LinearLayout>
</RelativeLayout>

rawtask.xml文件 这是原始文件,这里是列表视图的设计

    <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@drawable/property_display_box"
        android:id="@+id/listview1ll">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Task Name"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:textSize="30dp"
            android:id="@+id/lvtaskname" />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:textSize="30dp"
            android:hint="Task Details"
            android:layout_gravity="center"
            android:id="@+id/lvtaskdetails"
            />
        <CheckBox
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Add Details"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:textSize="30dp"
            android:id="@+id/lvchkbox"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"
            android:orientation="horizontal"
            android:id="@+id/lvl1">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:text="Remaining Time:"
                android:textSize="20dp"
                android:id="@+id/lvrt"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Done"
                android:layout_marginLeft="90dp"
                android:layout_marginTop="10dp"
                android:textSize="20dp"
                android:id="@+id/lvdone"/>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

Listviewadapter.java listviewadapter.java显示

public class ListViewAdapter2 extends BaseAdapter {

    Context cntx;
    AlertDialog.Builder alertDialogBuilder;
    //int loader = R.drawable.ic_menu_gallery;

    ArrayList<String> t_id=new ArrayList<String>();
    ArrayList<String> t_tname=new ArrayList<String>();
    ArrayList<String> t_detail=new ArrayList<String>();

    // ArrayList<Float> itemRating=new ArrayList<Float>();
    LayoutInflater inflater;
    ArrayList<HashMap<String, String>> data;
    //ImageLoader imageLoader;
    HashMap<String, String> resultp = new HashMap<String, String>();

    /*
     * public ListViewAdapter(Context context, ArrayList<HashMap<String,
     * String>> arraylist) { this.cntx = context; data = arraylist; imageLoader
     * = new ImageLoader(context); }
     */

    public ListViewAdapter2(Context context,
                            ArrayList<String> taskid,
                            ArrayList<String> taskname,
                            ArrayList<String> taskdetail) {
        // TODO Auto-generated constructor stub
        cntx = context;
        t_id=taskid;
        t_tname = taskname;
        t_detail =taskdetail;


        //Log.d("xyz", security_id.toString());

        //ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build();
        //ImageLoader.getInstance().init(config);

        alertDialogBuilder = new AlertDialog.Builder(context);
        alertDialogBuilder.setMessage("Do You Want To Call....");
        // itemRating=itm_rating;

    }

    @Override
    public int getCount() {
        return t_id.size();
    }

    @Override
    public Object getItem(int position) {
        return t_id.get(position);
    }

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

    @SuppressWarnings("deprecation")
    public View getView(final int position, View convertView, ViewGroup parent) {

        @SuppressWarnings("unused")
        final TextView taskname, taskdetail;

        inflater = (LayoutInflater) cntx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LayoutInflater inflater = LayoutInflater.from(cntx);

        convertView = inflater.inflate(R.layout.rawtask, parent, false);

        /*ImageLoader imageLoader = ImageLoader.getInstance();
        DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true)
                .cacheOnDisc(true).resetViewBeforeLoading(true)
                .showImageForEmptyUri(loader)
                .showImageOnFail(loader)
                .showImageOnLoading(loader).build();*/

        taskname= (TextView) convertView.findViewById(R.id.lvtaskname);
        taskdetail= (TextView) convertView.findViewById(R.id.lvtaskdetails);

        taskname.setText("taskName : "+t_tname.get(position));
        taskdetail.setText("taskdetail: "+t_detail.get(position));

        return convertView;
    }

   }

main activity.java 这是项目的最终.java文件

package com.example.sachin.listview;

public class Main2Activity extends Fragment {

public Main2Activity(){};
private static final String TAG_SUCCESS = "success";

JSONArray jsonarray;
JSONObject jsonobject;
ListView listview;
String img;
ListViewAdapter2 listadapter;
//ProgressDialog mProgressDialog;
ArrayList<HashMap<String, String>> arraylist;
private static String url_task = "http://10.0.2.2/portal/aFetchtask.php";
//  private static String url_profile ="http://10.0.2.2/myapp/fetchmember.php";

JSONParser jParser = new JSONParser();

ArrayList<String> t_id = new ArrayList<String>();
ArrayList<String> t_tname = new ArrayList<String>();
ArrayList<String> t_detail = new ArrayList<String>();
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    // don't look at this layout it's just a listView to show how to handle the keyboard
    View view = inflater.inflate(R.layout.activity_main, container, false);
    getActivity().setTitle("tasks");
    new DownloadJSON().execute();
    return  view;
}


private class DownloadJSON extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Create a progressdialog
        //mProgressDialog = new ProgressDialog(getActivity());
        //mProgressDialog.setTitle("Please Wait");
        // Set progressdialog message
        //mProgressDialog.setMessage("Loading...");
        //mProgressDialog.setIndeterminate(false);
        // Show progressdialog
        //mProgressDialog.show();

    }

    @Override
    protected Void doInBackground(Void... args) {
        // Create an array
        try {
            arraylist = new ArrayList<HashMap<String, String>>();

            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("abc", "abc"));
            JSONObject json = jParser.makeHttpRequest(url_task, "POST", params);

            int success1 = Integer.parseInt(json.getString(TAG_SUCCESS));
            Log.d("success", json.toString());

            if (success1 == 0) {
                Snackbar.make(view, "Not Data Found", Snackbar.LENGTH_LONG).show();
            }

            if (success1 == 1) {
                JSONArray ownerObj = json.getJSONArray("tasks");
                // arraylist = new ArrayList<HashMap<String, String>>();
                // Retrieve JSON Objects from the given URL address
                // Locate the array name in JSON
                // jsonarray = jsonobject.getJSONArray("images");


                for (int i = 0; i < ownerObj.length(); i++) {
                    //  HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = ownerObj.getJSONObject(i);
                    // Retrive JSON Objects

                    //securityId.add(jsonobject.getString("security_id"));
                    //   t_id.add(jsonobject.getString("t_id"));
                    t_tname.add(jsonobject.getString("t_tname"));
                    t_detail.add(jsonobject.getString("t_detail"));
                    // Number.add(jsonobject.getString("number"));

                    Log.d("DATA", jsonobject.toString());
                    //img="http://10.0.2.2/momskitchen/image/";
                    //proImage.add(img + jsonobject.getString("image"));
                             /* System.out.println(jsonobject.getString(TA));
                                System.out.println(g);*/

                }
            }
        } catch (Exception e) {
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void args) {
        listview = (ListView) getActivity().findViewById(R.id.listviewtask);

        ListViewAdapter2 listadapter = new ListViewAdapter2(getActivity(), t_id, t_tname, t_detail);
        // Set the adapter to the ListView
        listview.setAdapter(listadapter);
        // Close the progressdialog

        //mProgressDialog.dismiss();
    }
}
@Override
public void onSaveInstanceState(Bundle outState) {
    //add the values which need to be saved from the drawer to the bundle
    // outState = result.saveInstanceState(outState);
    super.onSaveInstanceState(outState);
}

}

最后是文件是我的api文件..

  <?php

include("connection.php");


    $response = array();    

    // get all products from products table
    $result = mysql_query("SELECT * FROM task") or die(mysql_error());

    // check for empty result
    if (mysql_num_rows($result) > 0) {
        // looping through all results
        // products node
        $response["tasks"] = array();

        while ($row = mysql_fetch_array($result))
        {

            $tasks = array();
            $tasks["t_id"] = $row["t_id"];
            $tasks["t_tname"] = $row["t_tname"];
            $tasks["t_udetail"] = $row["t_udetail"];

           // push single product into final response array
            array_push($response["tasks"], $tasks);
        }

            $response["success"] = 1;
        // echoing JSON response
        echo json_encode($response);


    }

    else 
    {
        // no products found
        $response["success"] = 0;
        $response["message"] = "No picture found";

        // echo no users JSON
        echo json_encode($response);
    }
  ?>        

此处所有文件均可用。 但是数据不是从数据库中提取的。 请帮帮我..

1 个答案:

答案 0 :(得分:0)

有很多编码错误。

  • Asynchronus类的返回类型与检索数据的方式不完全相同。
  • protected Void doInBackground(Void... args) {}返回null之后,只有在您没有返回任何响应时,您才能获得onPostExcute(Void args)的空值,只有在doInBackground()方法中才能获得完全静止。
  • 在rawtask.xml文件中应包含由适配器充气的视图,但在您的情况下,会提到其他视图。 因此请参考以下链接,将webservices中的数据导入listView。 here