Android 在ListView中显示数据库中的数据

Android 在ListView中显示数据库中的数据,android,json,database,listview,Android,Json,Database,Listview,我有一个从数据库中的表中获取数据的活动,我将这些数据显示在ListView中。但问题是,我想让这个列表视图中的itens可以点击,一旦用户点击一个项目,它应该将他重定向到另一个显示该项目详细信息的屏幕。我只显示订单号和日期,一旦我点击它,它应该会显示更多的细节。我该怎么做 以下是我目前的代码: public class Orders extends Fragment { private String jsonResult; //Here I get the order id

我有一个从数据库中的表中获取数据的活动,我将这些数据显示在ListView中。但问题是,我想让这个列表视图中的itens可以点击,一旦用户点击一个项目,它应该将他重定向到另一个显示该项目详细信息的屏幕。我只显示订单号和日期,一旦我点击它,它应该会显示更多的细节。我该怎么做

以下是我目前的代码:

public class Orders extends Fragment {

    private String jsonResult;

    //Here I get the order id and date
    private String url = "https://www.example.com/orders.php";
    private ListView listView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.orders, container, false);

        listView = (ListView) v.findViewById(R.id.listView1);
        TextView textView3 = (TextView) v.findViewById(R.id.textView16);

        //Getting current date and displaying inside the textView
        String currentDate = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()).format(new Date());
        textView3.setText(Html.fromHtml(currentDate));

        accessWebService();

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

                String item = ((TextView) view).getText().toString();

                String[] parts = item.split(" ");
                String order_nbr = parts[0];
                String order_id = order_nbr.replaceAll("[#]","");

                Intent intent = new Intent(getActivity(), OrderDetails.class);
                intent.putExtra("order_id", order_id);
                System.out.println(order_id);
                startActivity(intent);

            }
        });

        return v;
    }

    // Async Task to access the web
    private class JsonReadTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            HashMap<String,String> data = new HashMap<>();
            data.put("order_id",MainScreen.USERID);

            RegisterUserClass ruc = new RegisterUserClass();

            String result = ruc.sendPostRequest(url,data);

            jsonResult = result;

            return null;
        }

        private StringBuilder inputStreamToString(InputStream is) {
            String rLine = "";
            StringBuilder answer = new StringBuilder();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));

            try {
                while ((rLine = rd.readLine()) != null) {
                    answer.append(rLine);
                }
            }

            catch (IOException e) {
                // e.printStackTrace();
                Toast.makeText(getActivity().getApplicationContext(),
                        "Error..." + e.toString(), Toast.LENGTH_LONG).show();
            }
            return answer;
        }

        @Override
        protected void onPostExecute(String result) {
            ListDrwaer();
        }
    }// end async task

    public void accessWebService() {
        JsonReadTask task = new JsonReadTask();
        // passes values for the urls string array
        task.execute(new String[] { url });
    }

    // build hash set for list view
    public void ListDrwaer() {
        List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();

        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("orders");

            for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                String order_number = jsonChildNode.optString("orderid");
                String order_dateNhour = jsonChildNode.optString("order_date");

                String[] parts = order_dateNhour.split(" ");
                String date = parts[0];
                String hour = parts[1];

                String[] test1 = date.split("-");
                String year = test1[0];
                String month = test1[1];
                String day = test1[2];


                String outPut = "#" + order_number + "         " + day+"/"+ month +"/"+ year + "         " + hour + "      >";
                employeeList.add(createEmployee("orders", outPut));
            }
        } catch (JSONException e) {
            Toast.makeText(getActivity().getApplicationContext(), "Error" + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }

        SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), employeeList,
                android.R.layout.simple_list_item_1,
                new String[]{"orders"}, new int[] { android.R.id.text1 });
        listView.setAdapter(simpleAdapter);
    }

    private HashMap<String, String> createEmployee(String name, String number) {
        HashMap<String, String> employeeNameNo = new HashMap<String, String>();
        employeeNameNo.put(name, number);
        return employeeNameNo;
    }
}
公共类命令扩展片段{
私有字符串jsonResult;
//我在这里得到订单id和日期
专用字符串url=”https://www.example.com/orders.php";
私有列表视图列表视图;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.布局。订单,容器,错误);
listView=(listView)v.findViewById(R.id.listView1);
TextView textView3=(TextView)v.findViewById(R.id.textView16);
//获取当前日期并在textView中显示
字符串currentDate=newSimpleDateFormat(“dd/MM/yyyy”,Locale.getDefault()).format(new Date());
textView3.setText(Html.fromHtml(currentDate));
accessWebService();
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
字符串项=((TextView)视图).getText().toString();
String[]parts=item.split(“”);
字符串顺序_nbr=零件[0];
字符串order_id=order_nbr.replaceAll(“[#]”,”);
Intent Intent=新的Intent(getActivity(),OrderDetails.class);
意向。额外(“订单id”,订单id);
系统输出打印项次(订单号);
星触觉(意向);
}
});
返回v;
}
//访问web的异步任务
私有类JsonReadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
HashMap数据=新的HashMap();
data.put(“order_id”,MainScreen.USERID);
RegisterUserClass ruc=新的RegisterUserClass();
字符串结果=ruc.sendPostRequest(url,数据);
jsonResult=结果;
返回null;
}
私有StringBuilder inputStreamToString(InputStream为){
字符串rLine=“”;
StringBuilder answer=新建StringBuilder();
BufferedReader rd=新的BufferedReader(新的InputStreamReader(is));
试一试{
而((rLine=rd.readLine())!=null){
答:追加(rLine);
}
}
捕获(IOE异常){
//e.printStackTrace();
Toast.makeText(getActivity().getApplicationContext(),
“错误…”+e.toString(),Toast.LENGTH_LONG).show();
}
返回答案;
}
@凌驾
受保护的void onPostExecute(字符串结果){
ListDrwaer();
}
}//结束异步任务
public void accessWebService(){
JsonReadTask=新建JsonReadTask();
//传递URL字符串数组的值
执行(新字符串[]{url});
}
//为列表视图生成哈希集
公共无效列表{
List employeeList=新建ArrayList();
试一试{
JSONObject jsonResponse=新的JSONObject(jsonResult);
JSONArray jsonMainNode=jsonResponse.optJSONArray(“订单”);
for(int i=0;i;
添加(createEmployee(“订单”,输出));
}
}捕获(JSONException e){
Toast.makeText(getActivity().getApplicationContext(),“Error”+e.toString(),
吐司。长度(短)。show();
}
SimpleAdapter SimpleAdapter=新的SimpleAdapter(getActivity(),employeeList,
android.R.layout.simple\u list\u item\u 1,
新字符串[]{“orders”},新int[]{android.R.id.text1});
setAdapter(simpleAdapter);
}
私有HashMap createEmployee(字符串名称、字符串编号){
HashMap employeeNameNo=新HashMap();
雇员姓名、编号;
返回EmployeeNameo;
}
}

毕竟我能解决我的问题!我创建了一个列表的ArrayList来存储我想在下一个屏幕中显示的所有订单数据(尽管我只想在ListView 3值中显示):

List order_details=new ArrayList();

这样的列表#1将用于第一个订单的详细信息,而#2将用于第二个订单的详细信息,并且继续。单击此ListView中的某个项目后,我在该ArrayList中搜索具有此特定订单号的列表,并将该列表中存储的有关此特定订单的所有数据发送到下一个活动(订单详细信息)。它工作得很好

毕竟我能解决我的问题!我创建了一个列表的ArrayList来存储我想在下一个屏幕中显示的所有订单(甚至是订单)中的所有数据
List<List<String>> order_details = new ArrayList<List<String>>();