Android 为什么只打印列表视图的两个文本视图?
我有一个自定义适配器奇怪的问题。。。它只打印前两个元素(我的listview的前两个textview)。同样的代码适用于没有Listview的简单文本视图。我不明白我做错了什么 自定义适配器Android 为什么只打印列表视图的两个文本视图?,android,android-asynctask,custom-adapter,Android,Android Asynctask,Custom Adapter,我有一个自定义适配器奇怪的问题。。。它只打印前两个元素(我的listview的前两个textview)。同样的代码适用于没有Listview的简单文本视图。我不明白我做错了什么 自定义适配器 public class CustomAdapter extends ArrayAdapter<Avviso> { Context context; public CustomAdapter(Context context, int textViewResourceId, L
public class CustomAdapter extends ArrayAdapter<Avviso> {
Context context;
public CustomAdapter(Context context, int textViewResourceId, List<Avviso> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getViewOptimize(position, convertView, parent);
}
public View getViewOptimize(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.rowcustom, null);
viewHolder = new ViewHolder();
viewHolder.testoavviso = (TextView)convertView.findViewById(R.id.textViewtitolo);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Avviso avviso = getItem(position);
viewHolder.testoavviso.setText(avviso.getTestoavviso());
return convertView;
}
private class ViewHolder {
public TextView testoavviso;
}
}
公共类CustomAdapter扩展了ArrayAdapter{
语境;
公共CustomAdapter(上下文上下文、int textViewResourceId、列表对象){
超级(上下文、textViewResourceId、对象);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
返回getViewOptimize(位置、转换视图、父级);
}
公共视图getViewOptimize(int位置、视图转换视图、视图组父视图){
ViewHolder ViewHolder=null;
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u充气器\u SERVICE);
convertView=充气机。充气(R.layout.rowcustom,null);
viewHolder=新的viewHolder();
viewHolder.testoavviso=(TextView)convertView.findViewById(R.id.textViewtitolo);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}
Avviso Avviso=获取项目(位置);
viewHolder.testoavviso.setText(avviso.getestoavviso());
返回视图;
}
私有类视窗持有者{
公共文本视图testoavviso;
}
}
Avvisi.java
public class Avvisi extends Activity {
// blog url
static final String BLOG_URL = "http://www.miosito.com"
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
// set layout view
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_avvisi);
try {
getlink task = new getlink();
task.execute("Process started!");
//la stringa verra passata al metodo doInBackground del nostro AsyncTask
//per controllare lo stato del task, possiamo chiamare task.getStatus()
} catch (Exception ex) {
((TextView)findViewById(R.id.avviso1)).setText("Error");
}
}
private class getlink extends AsyncTask<String, String, List<Avviso>> {
// I tre tipi da dichiarare sono relativamente (in questo caso usiamo solo stringhe)
// il parametro in entrata di doInBackground (quando chiamiamo execute passiamo una stringa)
// il paramentro in entrata di onProgressUpdate (dati che vogliamo mostrare all' utente -opzionale,potremmo usare variabili globali-)
// il parametro in entrata di onPostExecure (una volta finito il task, potremmo voler mostrare un risultato all'utente)
// nel caso non volessimo usare parametri di alcun genere tipizziamo con Void,Void,Void (passeremo poi dei null come parametri)
ListView listView = (ListView)findViewById(R.id.listavvisi);
List<Avviso> avvisi = new LinkedList<Avviso>();
@Override
protected List<Avviso> doInBackground(String... arg) {
// stringa passata a onProgressUpdate
String result = "";
Document doc = null;
try {
doc = Jsoup.connect(BLOG_URL).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Elements links = doc.select("td.AVVISI-FORMAT-DEFAULT > a[href]");
int j=0;
int numavvisi = links.size();
for (Element link : links) {
if((j %2!=0) && (j<60)) {
String testonews = link.text();
String urlavviso= link.attr("abs:href");
int lunghezzanews = testonews.length();
if(lunghezzanews<80) {
avvisi.add(new Avviso(testonews));
} else {
avvisi.add(new Avviso(testonews.substring(0,80)));
}
} else {
j++;
}
}
return avvisi;
}
@Override
protected void onProgressUpdate(final String... values){
}
protected void onPostExecute(List<Avviso> avvisi) {
CustomAdapter adapter = new CustomAdapter(Avvisi.this, R.layout.rowcustom, avvisi);
listView.setAdapter(adapter);
}
}
}
公共类Avvisi扩展活动{
//博客网址
静态最终字符串BLOG_URL=”http://www.miosito.com"
列表视图列表视图;
@凌驾
创建时的公共void(Bundle savedInstanceState){
//设置布局视图
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_avvisi);
试一试{
getlink任务=新建getlink();
task.execute(“进程已启动!”);
//拉斯特林加帕萨塔酒店
//根据Controllere lo stato del task、possiamo chiamare task.getStatus()命令
}捕获(例外情况除外){
((TextView)findViewById(R.id.avviso1)).setText(“错误”);
}
}
私有类getlink扩展了异步任务{
//我是一个相对主义者(在《卡索·乌西亚莫独奏曲》中)
//背景中的il参数(quando chiamiamo execute passiamo una stringa)
//进度更新中的参数(所有“副官”都是全球变量)
//在执行后的夹带中的参数
//非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性非自愿性参数
ListView ListView=(ListView)findViewById(R.id.listavvisi);
List avvisi=new LinkedList();
@凌驾
受保护列表doInBackground(字符串…arg){
//stringa passata a onProgressUpdate
字符串结果=”;
单据单据=空;
试一试{
doc=Jsoup.connect(BLOG_URL.get();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Elements links=doc.select(“td.AVVISI-FORMAT-DEFAULT>a[href]”;
int j=0;
int numavvisi=links.size();
用于(元素链接:链接){
如果((j%2!=0)&&(j滚动条有问题。我删除了它,现在代码在onPostExecute()
中运行良好avvisi
的大小是多少?我怎么能看到?使用avvisi.size()?我打印了该值,结果是12。所以适配器中有问题……我想