0

我有一个带有一个 TextView 的 ListView。列表视图由字符串数组和数组适配器填充(在扩展 ListActivity 和 list_item 布局的 List 类中)。现在设置了一个点击监听器,并使用 switch 位置语句和 assets 文件夹中的本地 html 文件通过 uri 解析方法链接到列表行。单击列表行时,html 页面设置为显示在设置为(TopicDisplay 类和 display_item 布局)的 Web 视图中。下面是我的

问题:当用户单击列表视图上的一行时 - 从该行到最后一行的 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());

}
}
4

1 回答 1

0

当用户单击列表视图上的一行时 - 从该行到最后一行的 html 文档首先显示最后一个文档。

您只是忘记break;在 switch 语句中添加每个案例。

您还应该从每个 case 语句中删除公共代码,尝试:

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);
于 2013-01-13T04:32:31.607 回答