我正在 Asynctask 类中从互联网上下载一些数据。
所以我正在使用 doInBackground 功能。
执行此功能后,我将值返回 onpostexecute 方法。
在此 onpostexecute 方法中 我需要制作动态的文字视图。
P.S:我在for循环中获取所有数据,我没有收到任何错误,我只是无法形成动态textviews。 这是我的代码:
protected void onPostExecute(String file_url) {
//Links.setText(file_url);
int iterator=0;
Elements linksText = doc.select("#chapters .tips");
for (Element link : linksText) {
link_link = link.attr("href");
narutoLinks[iterator]=link_link;//from latestlinks
System.out.println("narutoLinks[iterator]= "+iterator+" "+link_link);
link_Text = link.text();
narutoLinkHeadingName[iterator]=link_Text;
System.out.println("narutoText[iterator]= "+iterator+" "+narutoLinkHeadingName[iterator]);
iterator++;
}
System.out.println("iterator= "+iterator);
TextView[] textViewArray = new TextView[iterator];
for( int i = 0; i < iterator; i++) {
textViewArray[i] = new TextView(narutoLinksOnly.this);
textViewArray[i].setText(narutoLinkHeadingName[i]);
textViewArray[i].setId(i);
textViewArray[i].setTextColor(0xff000000);
textViewArray[i].setTextSize(20);
textViewArray[i].setOnClickListener(this);
textViewArray[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(textViewArray[i]);
}
System.out.println("senkai");
if(connectionTimeout==true)
{showToast("Connection Timeout");
connectionTimeout=false;
}
// dismiss the dialog after the file was downloaded
dismissDialog(progress_bar_type);
// Displaying downloaded image into image view
// Reading image path from sdcard
}
这是我的xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/Ivory"
android:id="@+id/dynamicTextview1"
android:orientation="vertical" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/tvNarutoLinksOnly"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textColor="@color/black" />
</ScrollView>
</LinearLayout
这就是我的 oncreate 方法的样子:
View linearLayout;//declaring it inside the class itself
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.narutolinksonly);
linearLayout = findViewById(R.id.dynamicTextview1);
initialize();
new DownloadLinksFromURL().execute(url);
System.out.println("inside on create");
}
请帮助。
答案 0 :(得分:0)
改为使用listview
。
并使用从服务器获取的字符串列表为其设置数组适配器。
但是在你的情况下试试:
textViewArray[i].setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
答案 1 :(得分:0)
您必须设置listview适配器。您拥有数据,但onCreateView上没有任何内容将该数据与listView相关联。
以下是Android站点上使用游标的适配器
的示例 String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME};
int[] toViews = {android.R.id.text1}; // The TextView in simple_list_item_1
// Create an empty adapter we will use to display the loaded data.
// We pass null for the cursor, then update it in onLoadFinished()
mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, null,
fromColumns, toViews, 0);
setListAdapter(mAdapter);
将他们的光标数据换成textViewArray数据并使其成为BaseAdapter或类似的,然后你就完成了