我有一个带有一个TextView的ListView。列表视图由字符串数组和数组适配器填充(在List类中扩展ListActivity& list_item布局)。现在设置了一个单击侦听器,并使用switch position语句和assets文件夹中的本地html文件通过uri解析方法链接到列表行。单击列表行时,html页面将设置为在使用(TopicDisplay类& display_item布局)设置的Webview中显示。以下是我的
问题:当用户单击列表视图中的行时 - 从该行到最后一行的html文档首先显示为“上一个文档”。我可以使用Android设备后退按钮来浏览加载的每个html文档,直到单击的行。如何只显示点击的行HTML文档?
列表类中的代码
package com.abcdef.list;
//import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
//import android.widget.AdapterView;
//import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
//import android.widget.TextView;
public class List extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// storing string resources into Array
String[] adobe_products = getResources().getStringArray(R.array.adobe_products);
// Binding resources Array to ListAdapter
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
change(position);
}
void change(int position){
// Uri uri = null;
switch(position){
case 0 :{
Intent i0 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri0=Uri.parse("file:///android_asset/File0.html");
i0.setData(uri0);
startActivity(i0);}
case 1 :{
Intent i1 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri1=Uri.parse("file:///android_asset/Topic1.html");
i1.setData(uri1);
startActivity(i1);}
case 2 :{
Intent i2 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri2=Uri.parse("file:///android_asset/Topic2.html");
i2.setData(uri2);
startActivity(i2);}
case 3:{
Intent i3 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri3=Uri.parse("file:///android_asset/Topic3.html");
i3.setData(uri3);
startActivity(i3);}
case 4:{
Intent i4 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri4=Uri.parse("file:///android_asset/Topic4.html");
i4.setData(uri4);
startActivity(i4);}
case 5:{
Intent i5 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri5=Uri.parse("file:///android_asset/Topic5.html");
i5.setData(uri5);
startActivity(i5);}
case 6:{
Intent i6 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri6=Uri.parse("file:///android_asset/Topic6.html");
i6.setData(uri6);
startActivity(i6);}
case 7:{
Intent i7 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri7=Uri.parse("file:///android_asset/Topic7.html");
i7.setData(uri7);
startActivity(i7);}
case 8:{
Intent i8 = new Intent(getApplicationContext(), TopicDisplay.class);
Uri uri8=Uri.parse("file:///android_asset/Topic8.html");
i8.setData(uri8);
startActivity(i8);}
} } }
这是我的TopicDisplay类代码
package com.abcdef.list;
import android.app.Activity;
//import android.app.Application;
//import android.content.Intent;
import android.os.Bundle;
import android.webkit.*;
public class TopicDisplay extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.topic_display);
WebView tabViewing = (WebView) findViewById(R.id.webView1);
tabViewing.loadUrl(getIntent().getDataString());
}
}
答案 0 :(得分:0)
当用户点击列表视图中的一行时 - 从该行到最后一行的html文档首先显示为“上一个文档”。
您只是忘了在switch语句中为每个案例添加break;
。
您还应该从每个案例陈述中删除公共代码,请尝试:
Intent intent = new Intent(getApplicationContext(), TopicDisplay.class);
switch(position){
case 0 :
intent.setData(Uri.parse("file:///android_asset/File0.html"));
break;
case 1 :
intent.setData(Uri.parse("file:///android_asset/Topic1.html"));
break;
case 2 :
intent.setData(Uri.parse("file:///android_asset/Topic2.html"));
break;
// etc
}
startActivity(intent);