【发布时间】:2016-09-07 17:57:37
【问题描述】:
我想显示,数据从 mysql 读取到 setOnItemClickListener。就像whatsapp一样,我希望从数据库中读取的数据只在一行中显示(...),在每一行结束后,点击任何listview项目后,所有数据都将以具有textview的新意图打印。
我的 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;
}
这是layout 文件,我在其中显示listview 中的所有数据。
<?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>
【问题讨论】:
标签: android mysql database listview android-intent