Java Android中具有可链接文本的ListView
我从.NET web服务获得了以下输入:Java Android中具有可链接文本的ListView,java,android,Java,Android,我从.NET web服务获得了以下输入: https://www.LinkFromImageonTheGoogle.net/myImage.png<br />23/03/2014<br /><a href=http://www.mywebpage.net?ID=764>My remote pics</a><br /><br /> https://www.LinkFromImageonTheGoogle.net/myImag
https://www.LinkFromImageonTheGoogle.net/myImage.png<br />23/03/2014<br /><a href=http://www.mywebpage.net?ID=764>My remote pics</a><br /><br />
https://www.LinkFromImageonTheGoogle.net/myImage1.png<br />22/03/2014<br /><a href=http://www.mywebpage.net?ID=765>My remote pics 1</a><br /><br />
https://www.LinkFromImageonTheGoogle.net/myImage2.png<br />21/03/2014<br /><a href=http://www.mywebpage.net?ID=766>My remote pics 2</a><br /><br />
并尝试了以下代码,但在输出中,我只在三行中找到了文本链接,而不是html格式的链接:
<a href=http://www.mywebpage.net?ID=764>
<a href=http://www.mywebpage.net?ID=765>
<a href=http://www.mywebpage.net?ID=766>
为此,您可以使用
SpannableString
。感谢您在何处使用?谷歌搜索提供了一个示例。很抱歉,我的第一个问题是代码的输出,但是根据您的建议,我可能会在Android中获得所需的输出?是的,您可以使用clickablespan来实现此目的。在发布的链接中有一个例子。
<a href=http://www.mywebpage.net?ID=764>
<a href=http://www.mywebpage.net?ID=765>
<a href=http://www.mywebpage.net?ID=766>
public class news2 extends Activity {
private static final String SOAP_ACTION = "http://www.xxxxx.com/WebService/GetNews";
private static final String OPERATION_NAME = "GetNews";
private static final String WSDL_TARGET_NAMESPACE = "http://www.xxxxx.com/GetNews";
private static final String SOAP_ADDRESS = "http://www.xxxxx.com/GetNews.asmx";
private ListView mainListView;
private ArrayAdapter<String> listAdapter;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mains);
mainListView = (ListView) findViewById(R.id.mainListView);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
OPERATION_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = false;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
httpTransport.debug = true;
envelope.setOutputSoapObject(request);
try {
httpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
String RemoteString = response.toString();
Log.i("RemoteString", RemoteString.toString());
RemoteString = RemoteString.replaceAll("<br />", "\n");
Log.i("RemoteStringnew", RemoteString);
String[] var = RemoteString.split("\\\\r?\\\\n");// new line
ArrayList<String> planetList = new ArrayList<String>();
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow,
R.id.rowTextView, planetList);
for (String html : var) {
Spanned varHtml = Html.fromHtml(html);
Object[] strings = varHtml.getSpans(0, html.length(),
Object.class);
for (Object obj : strings) {
if (obj instanceof URLSpan) {
URLSpan urlSpan = (URLSpan) obj;
planetList.add(urlSpan.getURL());
}
}
}
mainListView.setAdapter(listAdapter);
} catch (Exception exception) {
Log.e("Error: ", exception.toString());
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainListView">
</ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
for (String html : var) {
SpannableString text = new SpannableString(html);
Object[] strings = text.getSpans(0, html.length(),
Object.class);
for (Object obj : strings) {
if (obj instanceof URLSpan) {
URLSpan urlSpan = (URLSpan) obj;
planetList.add(urlSpan.getURL());
}
}
}
mainListView.setAdapter(listAdapter);