我該如何去添加一個ListView中的可點擊鏈接?Android:如何在ListView中添加HTML鏈接?
回答
這是通過使用TextView的autoLink屬性完成的。花了我一些時間來仔細閱讀文檔,以便將其放在這裏以示例,以防別人正在尋找它:
讓我們假設您將listview綁定到自定義適配器。在這種情況下,下面這段代碼進入您的通話getView:
代碼:
textcontent.setText(Html.fromHtml(item.get_text()));
textcontent.setAutoLinkMask(Linkify.WEB_URLS);
只要把裏面的文字傳遞給呼叫的setText的鏈接,你就大功告成了。
XML:
<TextView
android:id="@+id/txtview"
android:autoLink="web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="put your link here"/>
希望幫助...
如果您有文本已在HTML格式的,做的最好的事情是:
TextView textcontent = (TextView) findViewById(...);
textcontent.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href="http://www.stackoverflow.com">stackoverflow.com</a>";
textcontent.setText(Html.fromHtml(text));
這將導致任何鏈接標籤在您的文本視圖中可點擊。或者,您可以按照Legend的建議使用android:autoLink="web"
,但這會產生以下副作用:a)鏈接未包裹在錨標記中的網址,以及b)可能會丟失網址或鏈接不是網址的內容。如果你想要自動鏈接的智能,那麼你應該使用它,但如果你想要的只是鏈接已經存在的標籤,你最好使用setMovementMethod()
。
詳情請參見本bug報告: http://code.google.com/p/android/issues/detail?id=2219
謝謝你,工作很棒。 – 2011-06-06 19:37:09
嗯,似乎加入textcontent.setMovementMethod(LinkMovementMethod.getInstance());使得textview文本部分的點擊不再傳遞到下面的列表視圖。 – 2011-06-06 20:22:20
這是所問問題的最正確答案。 BeerMe的答案解決了ListView項目變得無法點擊的問題。 – juil 2016-07-10 01:31:22
嗯,看來,加入textcontent.setMovementMethod(LinkMovementMethod.getInstance());使得textview文本部分的點擊不再傳遞到下面的列表視圖。
我發現了一個簡單的解決方法Issue 3414, Comment 27下:
一個簡單的方法來解決此問題是調用 「setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);」在添加列表視圖視圖時添加 。 您將能夠選擇行,單擊行並單擊子複選框和按鈕。
它的工作完美的我,雖然有些鑄件要求:
View v;
((ViewGroup)v).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
你在哪裏添加了desecendantFocusability?到ListView或ListItem?在我的TextView的非鏈接部分,當點擊我跟着你的例子添加可點擊的鏈接,但是,事件不會傳遞到列表項的父視圖或列表視圖... – ffleandro 2013-06-25 03:47:34
我用這樣的: 公衆查看getView(int的位置,查看convertView,ViewGroup的父){ 查看v = convertView; 如果(V == NULL){ LayoutInflater VI =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(itemLayout,null); } ... ((ViewGroup中)V).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); return v; } 我還沒有檢查,看看是否被點擊的非鏈接部分發生了什麼事件。 (不知道爲什麼我不能得到格式的代碼...抱歉。) – 2013-09-09 17:54:48
您需要設置一個功能setOnItemClickListener(),並在其內部聲明是這樣的:
Uri uri = Uri.parse("http://www.google.com");
startActivity(new Intent(Intent.ACTION_VIEW, uri));
的棘手的一部分listview是沒有(例如一個Button的TextView)可點擊!
基本上你需要兩個字符串數組:
- 名用戶在list_view看;
- 超鏈接,你想引導他們去。
在array.xml:
<string-array name="search_provider_name_array">
<item>Google</item>
<item>Yahoo</item>
<item>Bing</item>
<item>Baidu</item>
</string-array>
<string-array name="search_provider_link_array">
<item>https://www.google.com</item>
<item>https://www.yahoo.com</item>
<item>https://www.bing.com</item>
<item>https://www.baidu.com</item>
</string-array>
在layout_search_provider.xml它包含一個列表視圖:
在你的活動:
public class SearchProvider implements AdapterView.OnItemClickListener {
private ListView lv_search;
private String[] names = getResources().getStringArray(R.array.search_provider_name_array);
private String[] links = getResources().getStringArray(R.array.search_provider_link_array);
//..
@Override
public View onCreateView(View v, String name, Context context, AttributeSet attrs) {
lv_search= (ListView) v.findViewById(R.id.lv_search);
ArrayAdapter sAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, names);
lv_search.setAdapter(sAdapter);
lv_search.setOnItemClickListener(this);
return v;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(i<links.length){
Uri uri = Uri.parse(links[i]);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
}
當你的列表是動態的,你可以通過下面的方法來更新你的列表視圖。
- 將onCreateView()中的代碼移動到onResume()中。
- sAdapter.notifyDataSetChanged();
- 1. 如何在.html()中添加鏈接
- 2. 如何在ListView(android)中添加部分?
- 3. 如何在listview中添加mapviews? Android
- 4. 如何在Android的listview中添加imageview
- 5. 如何將$ userid添加到HTML鏈接
- 6. 我如何添加一個HTML鏈接
- 7. 我如何添加鏈接到HTML
- 8. 在html面板中添加href鏈接
- 9. 在html中添加一組鏈接
- 10. 在ajax中添加django鏈接的html
- 11. 在Android ListView中添加ItemListener
- 12. 如何在android中的listview中添加listview?
- 13. 在MAILTO鏈接正文中添加HTML鏈接
- 14. 如何在rails 3.2中爲simple_form字段添加html鏈接?
- 15. 如何在tinymce的第一段中添加html鏈接
- 16. 如何在HTML中的Wicket鏈接上添加參數?
- 17. 如何在html()方法@jQuery中正確添加鏈接?
- 18. 如何在C#TextBox中添加HTML鏈接?
- 19. 如何在ListView中添加ListView
- 20. 如何在liferay中添加鏈接
- 21. 如何在gridview中添加超鏈接
- 22. 如何在javascript中添加鏈接
- 23. 如何在JLabel中添加超鏈接
- 24. 如何在java類中添加鏈接?
- 25. 如何在gridview(asp.net)中添加鏈接?
- 26. 如何在wickets中添加鏈接
- 27. 如何在div中添加鏈接?
- 28. 如何在鳴叫中添加鏈接
- 29. 如何在php中添加鏈接
- 30. 如何在android手機中的短信中添加超鏈接?
這實際上並沒有爲我工作 - 個別環節留在那些在ListView項目無法點擊,但emmby的解決方案很好工作。 – 2011-06-06 19:35:17
非常感謝,我的ListView幫助。 – rwarner 2013-02-27 17:35:24