Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据在ListView中单击的特定项显示所有数据以达到新的目的_Android_Mysql_Database_Listview_Android Intent - Fatal编程技术网

Android 如何根据在ListView中单击的特定项显示所有数据以达到新的目的

Android 如何根据在ListView中单击的特定项显示所有数据以达到新的目的,android,mysql,database,listview,android-intent,Android,Mysql,Database,Listview,Android Intent,我想显示,从mysql读取到setOnItemClickListener的数据。像whatsapp一样,我希望从数据库读取的数据只显示在一行中,每行结束后,单击任何listview项后,所有数据都将以新的文本视图打印 我的java代码从抓取到在listview中显示数据 private class JsonReadTask extends AsyncTask<String, Void, String> { @Override protected Str

我想显示,从mysql读取到
setOnItemClickListener
的数据。像whatsapp一样,我希望从数据库读取的数据只显示在一行中,每行结束后,单击任何
listview
项后,所有数据都将以新的文本视图打印

我的java代码从抓取到在
listview
中显示数据

private class JsonReadTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(params[0]);
            try {
                HttpResponse response = httpclient.execute(httppost);
                jsonResult = inputStreamToString(
                        response.getEntity().getContent()).toString();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            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(getApplicationContext(),
                        "Error..." + e.toString(), Toast.LENGTH_LONG).show();
            }
            return answer;
        }

        @Override
        protected void onPostExecute(String result) {
            try {
                ListDrwaer();
                pdialog.dismiss();
            } catch (Exception e) {
                pdialog.dismiss();
                Toast.makeText(getApplicationContext(), "Error: Unreachable Database", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        protected void onPreExecute() {
            pdialog = ProgressDialog.show(Home.this, "Loading Content", "Please Wait...", true);
            super.onPreExecute();
        }
    }

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

    public void ListDrwaer() {
        dataList = new ArrayList<>();
        String str = "", str2 = "";
        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("works");
            for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                String name = (jsonChildNode.getString("name"));
                String username = jsonChildNode.getString("username");
                String password = jsonChildNode.getString("password");
                String details = jsonChildNode.getString("details");
                String outPut = "\n\nName: " + name + "\n\n" + "Username: " + username + "\n\n" + "Password: " + password + "\n\n" + "Details: " + details + "\n\n";
                dataList.add(createList("details", outPut));
            }
            Collections.reverse(dataList);


        } catch (JSONException e) {
            Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }


        simpleAdapter = new SimpleAdapter(this, dataList,
                android.R.layout.simple_list_item_1,
                new String[]{"details"}, new int[]{android.R.id.text1});

        listView.setAdapter(simpleAdapter);

    }

    private HashMap<String, String> createList(String key, String value) {
        HashMap<String, String> data = new HashMap<>();
        data.put(key, value);
        return data;
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.mr_robot.app_proj.Home"
    tools:showIn="@layout/activity_home">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView2"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="62dp" />
</RelativeLayout>
这里是新意图的布局文件,我想在点击特定项目后显示所有数据

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.mr_robot.temp_proj.Show"
    android:background="#ffffff">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="false">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:id="@+id/list_tag"
            android:layout_alignParentTop="true"
            android:textColor="#000000"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="44dp" />
    </ScrollView>
</RelativeLayout>

您可以使用两个数据列表,一个包含真实数据,另一个包含部分文本(使用子字符串和add(…))。您可以使用第二个来显示,但当单击它时,您将从实际列表中发送数据

ListView lv = (ListView) findViewById(R.id.listview2);
lv.setOnItemClickListener(new OnItemClickListener(){
  @Override
  public void onItemClick(AdapterView<?> adapter, View v, int position,
        long arg3) 
  {
        String value = (String)adapter.getItemAtPosition(position); 
        // assuming string and if you want to get the value on click of list item
        // your code using intent
        Intent intent = new Intent(FirstActivity.this, ShownActivity.class);
        // put your real data here
        intent.putExtra("keydata", datalist2[position]);
        startActivity(intent);
  }
});
ListView lv=(ListView)findViewById(R.id.listview2);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共单击(适配器视图适配器,视图v,内部位置,
长arg3)
{
字符串值=(字符串)适配器.getItemAtPosition(位置);
//假设字符串,如果您想在单击列表项时获取值
//您的代码使用了intent
意向意向=新意向(FirstActivity.this、ShownActivity.class);
//把你的真实数据放在这里
intent.putExtra(“keydata”,datalist2[position]);
星触觉(意向);
}
});

然后可以使用String data=getIntent.getExtra(“keydata”);在下一个“显示数据”活动中,您可以使用两个数据列表,一个包含真实数据,另一个包含部分文本(使用子字符串和add(…))。您可以使用第二个来显示,但当单击它时,您将从实际列表中发送数据

ListView lv = (ListView) findViewById(R.id.listview2);
lv.setOnItemClickListener(new OnItemClickListener(){
  @Override
  public void onItemClick(AdapterView<?> adapter, View v, int position,
        long arg3) 
  {
        String value = (String)adapter.getItemAtPosition(position); 
        // assuming string and if you want to get the value on click of list item
        // your code using intent
        Intent intent = new Intent(FirstActivity.this, ShownActivity.class);
        // put your real data here
        intent.putExtra("keydata", datalist2[position]);
        startActivity(intent);
  }
});
ListView lv=(ListView)findViewById(R.id.listview2);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共单击(适配器视图适配器,视图v,内部位置,
长arg3)
{
字符串值=(字符串)适配器.getItemAtPosition(位置);
//假设字符串,如果您想在单击列表项时获取值
//您的代码使用了intent
意向意向=新意向(FirstActivity.this、ShownActivity.class);
//把你的真实数据放在这里
intent.putExtra(“keydata”,datalist2[position]);
星触觉(意向);
}
});

然后可以使用String data=getIntent.getExtra(“keydata”);在下一个活动中,显示您的数据

好的,我理解您所说的。我是个笨蛋,我的问题是,我是怎么做的?你能给我看看吗?我不知道如何在点击特定项目时显示准确的数据。我使用了“列表数据列表;”这是一个错误“需要数组类型”。好的,我明白你说的。我是个笨蛋,我的问题是,我是怎么做的?你能给我看看吗?我不知道如何在点击特定项目时显示准确的数据。我使用了“列表数据列表;”这是一个错误“预期的数组类型”。