2014-01-10 2 views
0

내 문제를보고 도움이되는 사람에게 미리 감사드립니다. 나는 webview에 HTML 페이지를 표시하는 간단한 응용 프로그램이 있습니다. strings.xml의 문자열 배열에서 목록을 생성합니다. 각 항목은 ArrayView에 문제없이 나열된 순서대로 표시됩니다. setOnItemClickListener 및 loadUrl은 스크롤하고 선택할 때까지 제대로 작동합니다. 스크롤 한 다음 선택하면 잘못된 HTML 파일이로드되고 (선택되지 않은 경우) 가끔로드되지 않고 충돌하거나 주요로드 작업으로 되돌아갑니다. 나는 수많은 크기와 스타일 에뮬레이터와 넥서스 7 타블렛에서 이것을 테스트 해 보았습니다.ListView, setOnItemClickListener

public class MKI extends Activity 
    { 
    ListView listView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_style); 
    listView = (ListView) findViewById(R.id.list); 
    String[] list = getResources().getStringArray(R.array.maintkits_array); 
     listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list)); 

    listView.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
      public void onItemClick(AdapterView<?> parent, View view, int p,long id) 
     { 
       ListView lv = (ListView) parent; 
       TextView tv = (TextView) lv.getChildAt(p); 
       String s = tv.getText().toString(); 
       setContentView(R.layout.html_view); 
       WebView mbrowser = (WebView) findViewById(R.id.viewHTML); 
       mbrowser.loadUrl("file:///android_asset/ki/"+ s +".html"); 

     } 
    }); 
} 
    } 

답변

0

아마도 두 가지 활동으로이를 분리하는 것이 좋습니다 것 : 여기

목록을 표시하고 웹보기로 선택한 HTML 파일을로드하는 클래스입니다. URL 선택 표시를 처리하는 브라우저와 웹 페이지 표시를 처리하는 브라우저 같은

뭔가 :

public class MKI extends Activity { 

    private ListView listView; 
    private ArrayAdapter<String> adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_style); 

    String[] list = getResources().getStringArray(R.array.maintkits_array); 
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list); 

    listView = (ListView) findViewById(R.id.list); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
      public void onItemClick(AdapterView<?> parent, View view, int p,long id) 
     { 
       String url = adapter.getItem(p); 
       Intent viewPage = new Intent(MKI.this, WebActivity.class); 
       viewPage.putExtra(EXTRA_URL, url); 
       startActivity(viewPage); 
     } 
    }); 
} 
    } 

public class WebActivity extends Activity { 

    public static final String EXTRA_URL = "EXTRA_URL"; 

    private WebView webview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   

     if(!getIntent().hasExtra(EXTRA_URL)){ 
      throw new IllegalArgumentException("Must provide url to" this.getClass().getSimpleName()); 
     } else { 
        setContentView(R.layout.store_activity); 
      webview = (WebView)findViewById(R.id.web_view); 

        String url = getIntent().getStringExtra(EXTRA_URL); 
        mbrowser.loadUrl("file:///android_asset/ki/"+ url +".html"); 
       } 



     ..... 


     } 
+0

덕분에 내 좋은 사람. 이것은 잘 작동하는 것 같습니다. 나는 그 기능을 조금만 해봤지만 완벽하게 작동하는 것 같다. 다시 한번. 감사. – user2506891

관련 문제