Android 如何根据在ListView中单击的特定项显示所有数据以达到新的目的
我想显示,从mysql读取到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
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”);在下一个活动中,显示您的数据好的,我理解您所说的。我是个笨蛋,我的问题是,我是怎么做的?你能给我看看吗?我不知道如何在点击特定项目时显示准确的数据。我使用了“列表数据列表;”这是一个错误“需要数组类型”。好的,我明白你说的。我是个笨蛋,我的问题是,我是怎么做的?你能给我看看吗?我不知道如何在点击特定项目时显示准确的数据。我使用了“列表数据列表;”这是一个错误“预期的数组类型”。