|
|
|
Android อยากทราบวิธีการอ่าน onItemClick จากคลาสที่ไม่ได้ extends Activity ครับ |
|
|
|
|
|
|
|
ผมได้ศึกษา RssFeed จากเว็บนี้ครับ http://amitandroid.blogspot.com/2013/02/android-rssfeed-with-async-task-example.html ซึ่งตอนนี้สามารถอ่าน RssFeed มาแสดงบน Android ได้แล้วเหมือนตัวอย่างในเว็บ แต่โค้ดในเว็บมันไม่ได้เขียนให้เปิดลิ้งค์หน้าเว็บจาก RssFeed ที่อ่านมาครับ ผมได้ลองแก้โค้ดในไฟล์ RssReaderActivity.java ให้เป็นแบบนี้ครับ
Code
public class RssReaderActivity extends Activity implements AsyncTaskCompletionListener{
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rss_reader);
listview=(ListView)findViewById(R.id.rssfeed_listview);
if(Utility.determineConnectivity(this)){
new RssFeedAsyncTask(this).execute(Utility.url);
// *** เพิ่มส่วนนี้เข้าไป ***
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
else{
Toast.makeText(this, "No Internet Connection", Toast.LENGTH_SHORT).show();
}
}
แต่พอรันแล้วมันจะเปิดเว็บ http://www.example.com เลย ไม่แสดง RssFeed ครับ ผมจึงคิดว่าควรจะไปแก้ไขโค้ดในไฟล์ RssReaderListAdapter.java มากกว่า ผมจึงแก้โค้ดในฟังก์ชัน getView() แบบนี้ครับ
Code
public class RssReaderListAdapter extends ArrayAdapter<RssFeedStructure> {
List<RssFeedStructure> imageAndTexts1 = null;
public RssReaderListAdapter(Activity activity,
List<RssFeedStructure> imageAndTexts) {
super(activity, 0, imageAndTexts);
imageAndTexts1 = imageAndTexts;
// Permission StrictMode
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView = inflater.inflate(R.layout.rssfeedadapter_layout, null);
TextView textView = (TextView) rowView.findViewById(R.id.feed_text);
TextView timeFeedText = (TextView) rowView
.findViewById(R.id.feed_updatetime);
ImageView imageView = (ImageView) rowView.findViewById(R.id.feed_image);
try {
Log.d("rssfeed", "imageAndTexts1.get(position).getImgLink() :: "
+ imageAndTexts1.get(position).getImgLink() + " :: "
+ imageAndTexts1.get(position).getTitle()+ " :: "
+ imageAndTexts1.get(position).getUrl());
textView.setText(imageAndTexts1.get(position).getTitle());
SpannableString content = new SpannableString(imageAndTexts1.get(
position).getPubDate());
content.setSpan(new UnderlineSpan(), 0, 13, 0);
timeFeedText.setText(content);
// โค้ดที่เพิ่มเข้าไป OnClick Item
imageAndTexts1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView, int position, long mylng) {
Toast.makeText(getApplicationContext(), imageAndTexts1.get(position).getUrl(), Toast.LENGTH_SHORT).show();
}
});
if (imageAndTexts1.get(position).getImgLink() != null) {
URL feedImage = new URL(imageAndTexts1.get(position)
.getImgLink().toString());
if (!feedImage.toString().equalsIgnoreCase("null")) {
HttpURLConnection conn = (HttpURLConnection) feedImage
.openConnection();
InputStream is = conn.getInputStream();
imageView.setLayoutParams(new LinearLayout.LayoutParams(200, 200));
Bitmap img = BitmapFactory.decodeStream(is);
imageView.setImageBitmap(img);
} else {
imageView.setBackgroundResource(R.drawable.im);
}
}
} catch (MalformedURLException e) {
} catch (IOException e) {
}
return rowView;
}
แต่มันแสดง error แบบนี้ในโค้ดครับ
Quote:The method setOnItemClickListener(new OnItemClickListener(){}) is undefined for the type List<RssFeedStructure>
ไม่ทราบว่าทำยังไงถึงจะเปิดลิ้งค์ของ RssFeed จากข้อความใน ListView ได้ครับ
Tag : Mobile, Android
|
|
|
|
|
|
Date :
2013-06-29 16:51:32 |
By :
mmc01 |
View :
1259 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สร้าง Event ไว้ข้างนอกได้หรือเปล่าครับ
Code (Android-Java)
// OnClick Item
lisView1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView,
int position, long mylng) {
String sMemberID = MyArrList.get(position).get("MemberID")
.toString();
String sName = MyArrList.get(position).get("Name")
.toString();
String sTel = MyArrList.get(position).get("Tel")
.toString();
//String sMemberID = ((TextView) myView.findViewById(R.id.ColMemberID)).getText().toString();
// String sName = ((TextView) myView.findViewById(R.id.ColName)).getText().toString();
// String sTel = ((TextView) myView.findViewById(R.id.ColTel)).getText().toString();
viewDetail.setIcon(android.R.drawable.btn_star_big_on);
viewDetail.setTitle("Member Detail");
viewDetail.setMessage("MemberID : " + sMemberID + "\n"
+ "Name : " + sName + "\n" + "Tel : " + sTel);
viewDetail.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
viewDetail.show();
}
});
Android JSON Retrieving Data from URL Web Server (PHP MySQL and JSON)
|
|
|
|
|
Date :
2013-07-01 08:45:15 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|