2010-04-08 63 views
1

我從數據庫中讀取書籤,用listview顯示它,但是當點擊 列表項時,它無法正確加載url,瀏覽器應用 源代碼中的一些代碼。如何修改書籤的列表項點擊監聽器

我有關於Android和Java沒有太多的經驗,這樣的麻煩也 混淆了兩天

感謝您的幫助

public class bookmarks extends Activity { 
private Cursor bookmarks; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    bookmarks = Browser.getAllBookmarks(getContentResolver()); 
    int urlColumn = bookmarks.getColumnIndex(android.provider.Browser.BookmarkColumns.URL); 
    Cursor results; 
    String[] proj = new String[]{ 
     android.provider.Browser.BookmarkColumns.URL, 
     android.provider.Browser.BookmarkColumns.TITLE 
    }; 
    int[] to = new int[]{ 
     android.R.id.text2, 
     android.R.id.text1 
    }; 

    String whereClause; 
    String orderBy = Browser.BookmarkColumns.VISITS + " DESC"; 
    whereClause = Browser.BookmarkColumns.BOOKMARK + " != 0"; 

    results = managedQuery(Browser.BOOKMARKS_URI, 
      Browser.HISTORY_PROJECTION, whereClause, null, orderBy); 
    startManagingCursor(results); 

    ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, results, proj, to); 
    ListView myListView = (ListView) findViewById(R.id.list); 
    myListView.setAdapter(adapter); 
    myListView.setOnItemClickListener(mListener);  // 設置點擊 

} 

// 偵聽事件 
private AdapterView.OnItemClickListener mListener = new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     loadUrl(position); 
    } 

}; 

// 載入網址 
private void loadUrl(int position) { 
    Intent intent = (new Intent()).setAction(getUrl(position)); 
    setResultToParent(RESULT_OK, intent); 
    finish(); 
} 

public String getUrl(int position) { 
    String url = getString(Browser.HISTORY_PROJECTION_URL_INDEX, position); 
    return url; 
} 

// This Activity is generally a sub-Activity of CombinedHistoryActivity. In 
// that situation, we need to pass our result code up to our parent. 
// However, if someone calls this Activity directly, then this has no 
// parent, and it needs to set it on itself. 
private void setResultToParent(int resultCode, Intent data) { 
    Activity a = getParent() == null ? this : getParent(); 
    a.setResult(resultCode, data); 
} 

}

回答

0

我不認爲你正確設置的意圖:

Intent intent = new Intent("android.intent.action.VIEW", Uri 
        .parse(getUrl(position)));