|
|
|
สอบถามเกี่ยวกับ Get String ตาม Position ของ ListView Adapter หน่อยครับว่าทำยังไง |
|
|
|
|
|
|
|
Get String ตาม Position ของ ListView Adapter หน่อยครับว่าทำยังไง
มันคือการเอา ข้อมูล ของข้อความนั้นๆ ของมา show ให้ตรงตาม Position หรือ ตรงตำแหน่ง โดยใช้การเรียกผ่าน Adapter ที่ใช้เป้นตัวกลางในการส่ง โดยการ settext ข้อความนั้นอ่าครับ
หัวใจสำคัญที่สุดจะอยู่ที่ Adapter ต่างหาก โดยที่ข้อมูลจะต้องกำหนดลงไปใน Adapter ก่อน แล้วนำ Adapter ไปกำหนดให้ List View อีกที ถึงจะทำให้ List View แสดงข้อมูลได้ ดังนั้น List View ก็เป็นแค่ View ที่ใช้สำหรับแสดงข้อมูลเท่านั้น
สำหรับ Adapter ก็เปรียบเสมือนแหล่งกำหนดข้อมูลที่จะให้แสดง ในการใช้งาน List View แบบพื้นฐาน ข้อมูลที่จะแสดงจะอยู่ในรูปของ String Array โดยกำหนดให้แสดงข้อมูลแต่ละตัวบน Text View ที่ระบบได้เตรียมไว้แล้ว (android.R.layout.simple_list_item_1) แล้วจึงนำไปแสดงใน List View
ลองศึกษาตามนี้ดูนะ ครับ http://http://www.akexorcist.com/2012/09/android-code-custom-list-view.html
|
|
|
|
|
Date :
2017-05-04 10:33:38 |
By :
heloman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ผมทำคือผมดึงค่าจาก Database ทั้งหมดมาแสดงเป็น List View แบบ Adapter คับ ผมอยากทราบวิธีทำให้ส่งค่าไปอีกหน้าตามปุ่มที่ผมทำไว้ยังไงครับ เช่น กดปุ่มแรกก็ส่งค่าใน TextView อันแรกไป ปุ่ม 2 ก็ส่งค่าใน TextView อันที่ 2 ไป
อันนี้เป็น Code ที่ผมทำตามตัวอย่างของคนอื่นครับ
MainActivity.java หน้าดึงข้อมูลจาก Database
package com.example.taiyark.test;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
ListView listCollege;
ProgressBar proCollageList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
listCollege = (ListView)findViewById(R.id.listCollege);
proCollageList = (ProgressBar)findViewById(R.id.proCollageList);
new GetHttpResponse(this).execute();
}
private class GetHttpResponse extends AsyncTask<Void, Void, Void>
{
private Context context;
String result;
List<cources> collegeList;
public GetHttpResponse(Context context)
{
this.context = context;
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0)
{
HttpService httpService = new HttpService("https://localhost/courses.php");
try
{
httpService.ExecutePostRequest();
if(httpService.getResponseCode() == 200)
{
result = httpService.getResponse();
Log.d("Result", result);
if(result != null)
{
JSONArray jsonArray = null;
try {
jsonArray = new JSONArray(result);
JSONObject object;
JSONArray array;
cources college;
collegeList = new ArrayList<cources>();
for(int i=0; i<jsonArray.length(); i++)
{
college = new cources();
object = jsonArray.getJSONObject(i);
college.cources_name = object.getString("sc_poker_id");
college.cources_description = object.getString("sc_poker_product");
collegeList.add(college);
}
}
catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else
{
Toast.makeText(context, httpService.getErrorMessage(), Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
proCollageList.setVisibility(View.GONE);
listCollege.setVisibility(View.VISIBLE);
if(collegeList != null)
{
ListAdapter adapter = new ListAdapter(collegeList, context);
listCollege.setAdapter(adapter);
}
}
}
public class HttpService
{
private ArrayList <NameValuePair> params;
private ArrayList <NameValuePair> headers;
private String url;
private int responseCode;
private String message;
private String response;
public String getResponse()
{
return response;
}
public String getErrorMessage()
{
return message;
}
public int getResponseCode()
{
return responseCode;
}
public HttpService(String url)
{
this.url = url;
params = new ArrayList<NameValuePair>();
headers = new ArrayList<NameValuePair>();
}
public void AddParam(String name, String value)
{
params.add(new BasicNameValuePair(name, value));
}
public void AddHeader(String name, String value)
{
headers.add(new BasicNameValuePair(name, value));
}
public void ExecuteGetRequest() throws Exception
{
String combinedParams = "";
if(!params.isEmpty())
{
combinedParams += "?";
for(NameValuePair p : params)
{
String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(),"UTF-8");
if(combinedParams.length() > 1)
{
combinedParams += "&" + paramString;
}
else
{
combinedParams += paramString;
}
}
}
HttpGet request = new HttpGet(url + combinedParams);
for(NameValuePair h : headers)
{
request.addHeader(h.getName(), h.getValue());
}
executeRequest(request, url);
}
public void ExecutePostRequest() throws Exception
{
HttpPost request = new HttpPost(url);
for(NameValuePair h : headers)
{
request.addHeader(h.getName(), h.getValue());
}
if(!params.isEmpty())
{
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
}
executeRequest(request, url);
}
private void executeRequest(HttpUriRequest request, String url)
{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 10000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpClient client = new DefaultHttpClient(httpParameters);
HttpResponse httpResponse;
try
{
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if (entity != null)
{
InputStream instream = entity.getContent();
response = convertStreamToString(instream);
instream.close();
}
}
catch (ClientProtocolException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
catch (IOException e)
{
client.getConnectionManager().shutdown();
e.printStackTrace();
}
}
private String convertStreamToString(InputStream is)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try
{
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return sb.toString();
}
}
}
ListAdapter.java หน้า Listview
package com.example.taiyark.test;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import java.util.List;
public class ListAdapter extends BaseAdapter
{
Context context;
List<cources> valueList;
public ListAdapter(List<cources> listValue, Context context)
{
this.context = context;
this.valueList = listValue;
}
@Override
public int getCount()
{
return this.valueList.size();
}
@Override
public Object getItem(int position)
{
return this.valueList.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewItem viewItem = null;
if(convertView == null)
{
viewItem = new ViewItem();
LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
//LayoutInflater layoutInfiater = LayoutInflater.from(context);
convertView = layoutInfiater.inflate(R.layout.list_adapter_view, null);
viewItem.txtTitle = (Button)convertView.findViewById(R.id.adapter_text_title);
viewItem.txtDescription = (TextView)convertView.findViewById(R.id.adapter_text_description);
convertView.setTag(viewItem);
}
else
{
viewItem = (ViewItem) convertView.getTag();
}
viewItem.txtTitle.setText(valueList.get(position).cources_name);
viewItem.txtDescription.setText(valueList.get(position).cources_description);
return convertView;
}
}
class ViewItem
{
Button txtTitle;
TextView txtDescription;
}
activity_main.xml
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.taiyark.testdata.MainActivity"
android:background="#ffffff" >
<TextView
android:id="@+id/cources_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Topic"
android:textColor="#429ed7"
android:textSize="25sp"
android:textStyle="bold" />
<ListView
android:id="@+id/listCollege"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone"
android:layout_marginTop="35dp" >
</ListView>
<ProgressBar
android:id="@+id/proCollageList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="visible"
/>
<ImageView
android:id="@+id/borderImg"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_alignLeft="@+id/cources_title"
android:layout_below="@+id/cources_title"
android:background="#429ed7" />
</RelativeLayout>
list_adapter_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#ffffff"
>
<Button
android:id="@+id/adapter_text_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#429ed7"
android:textSize="18sp"
/>
<TextView
android:id="@+id/adapter_text_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#020202"/>
</LinearLayout>
|
ประวัติการแก้ไข 2017-05-04 22:37:24 2017-05-04 22:42:03 2017-05-05 02:46:52
|
|
|
|
Date :
2017-05-04 22:35:03 |
By :
Taiyark |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|