2012-05-15 44 views
0

後我點擊「更多」按鈕,它假設從10列表視圖擴展到20無法刷新的ListView

但點擊後,列表視圖中沒能延續,並保持原來的大小。

它只能保持滾動條的位置。這是我需要的一半。

newsid = new int[webservice.news.size()]; 
     title = new String[webservice.news.size()]; 
     date = new String[webservice.news.size()]; 
     imagepath = new String[webservice.news.size()]; 
     for (int i = 0; i < webservice.news.size(); i++) { 
      newsid[i] = webservice.news.get(i).getID(); 
      title[i] = webservice.news.get(i).getNtitle(); 
      date[i] = webservice.news.get(i).getNArticalD(); 
      imagepath[i] = webservice.news.get(i).getImagePath(); 
     } 
     adapter = new CustomAdapter_ParticularCategoryAllNews(this, title, 
       date, imagepath); 
     lv.addFooterView(footermore); 
     if (constant.isOnline()) { 
      lv.addFooterView(constant.AdMob()); 
     } 
     TextView titletext = (TextView) findViewById(R.id.text_pagetitle); 
     titletext.setText(pagetitletext.toString()); 
     lv.setAdapter(adapter); 

這是在啓動活動時調用。

btnmore.setOnClickListener(new OnClickListener() { 
    public void onClick(View arg0) { 
for (int i = 0; i < webservice.news.size(); i++) {                   
newsid[i] = webservice.news.get(i).getID(); 
title[i] = webservice.news.get(i).getNtitle(); 
date[i] = webservice.news.get(i).getNArticalD(); 
imagepath[i] = webservice.news.get(i).getImagePath(); 
}  
adapter.setTitle(title); 
adapter.setDate(date); 
adapter.setImagepath(imagepath); 
position = lv.getFirstVisiblePosition(); 
lv.smoothScrollToPosition(position); 
adapter.notifyDataSetChanged(); 

這是我點擊「更多按鈕」後調用的。然而,名單並沒有從10個擴展到20個項目。

public class CustomAdapter_ParticularCategoryAllNews extends BaseAdapter { 

private Activity activity; 
private String[] title, date, imagepath; 
private static LayoutInflater inflater = null; 
private ImageLoader_Loader imageLoader; 
private WindowManager wm = null; 
private Display display; 
private Config_ConstantVariable constant; 

public CustomAdapter_ParticularCategoryAllNews(Activity a, String[] title, 
     String[] date, String[] imagepath) { 
    activity = a; 
    this.title = title; 
    this.date = date; 
    this.imagepath = imagepath; 
    inflater = (LayoutInflater) activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE); 
    imageLoader = new ImageLoader_Loader(activity.getApplicationContext()); 
    constant = new Config_ConstantVariable(activity); 
} 

public int getCount() { 
    return title.length; 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 

public void setTitle(String[] title) { 
    this.title = title; 
} 

public void setDate(String[] date) { 
    this.date = date; 
} 

public void setImagepath(String[] imagepath) { 
    this.imagepath = imagepath; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi = convertView; 
    if (convertView == null) 
     vi = inflater.inflate(R.layout.main_particularcategoryallnewslist, 
       parent, false); 

    LinearLayout linear = (LinearLayout) vi.findViewById(R.id.layout_image); 

    ImageView imageview = (ImageView) vi 
      .findViewById(R.id.image_categoryallnewstitle); 

    TextView titletext = (TextView) vi 
      .findViewById(R.id.text_categoryallnewstitle); 

    TextView datetext = (TextView) vi.findViewById(R.id.text_newsdate); 

    if (!imagepath[position].toString().equals("no picture")) { 
     imageview.setVisibility(View.VISIBLE); 
     linear.setVisibility(View.VISIBLE); 
     imageLoader.DisplayImage(imagepath[position], imageview); 
    } else { 
     imageview.setVisibility(View.GONE); 
     imageview.setImageDrawable(null); 
     linear.setVisibility(View.GONE); 
     display = wm.getDefaultDisplay(); 
     int screenWidth = display.getWidth(); 
     titletext.setWidth(screenWidth); 
    } 
    if (constant.getscreenresolution() >= 800 && constant.ScreenOrientation() == 1) { 
     titletext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 30); 
     datetext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20); 
    } 
    titletext.setText(title[position].toString()); 
    datetext.setText(date[position].toString()); 
    return vi; 
} 

}

這是CustomAdapter類。

+0

你的適配器是什麼樣的? – sanna

+0

接口或基座適配器編碼? –

+0

您的CustomAdapter_ParticularCategoryAllNews – sanna

回答

0

在您的適配器添加:

public void setTitle(String[] title) { 
    this.title = title; 
} 

public void setDate(String[] date) { 
    this.date = date; 
} 

public void setImagepath(String[] imagepath) { 
    this.imagepath = imagepath; 
} 

當按下按鍵更上面的調用包含20個對象數組的三種方法。然後在您的適配器上撥打notifyDataSetChanged

更新:

這是爲我工作: 活動:

public class HelpProjectActivity extends Activity { 

    private ArrayList<Item> items; 
    private boolean extend = false; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     createArray(); 

     ListView lv = (ListView)findViewById(R.id.list); 
     lv.setAdapter(new HelpListAdapter()); 
    } 

    private void createArray() { 
     items = new ArrayList<Item>(); 
     for(int i = 0; i < 20; i++) { 
      Item item = new Item(); 
      item.title = "Title " + i; 
      item.subtitle = "Subtitle " + i; 
      item.image = "default"; 
      items.add(item); 
     } 
    } 

    public void morePressed(View v) { 
     extend = !extend; 
     Button b = (Button) findViewById(R.id.button); 
     b.setText(extend ? R.string.less_button : R.string.more_button); 
     ListView lv = (ListView)findViewById(R.id.list); 
     ((BaseAdapter)lv.getAdapter()).notifyDataSetChanged(); 
    } 

    private class HelpListAdapter extends BaseAdapter { 

     @Override 
     public int getCount() { 
      if (extend) { 
       return items.size(); 
      } 
      return items.size()/2; 
     } 

     @Override 
     public Object getItem(int pos) { 
      return items.get(pos); 
     } 

     @Override 
     public long getItemId(int pos) { 
      return pos; 
     } 

     @Override 
     public View getView(int pos, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if (v == null) { 
       v = View.inflate(getApplicationContext(), R.layout.litst_item, null); 
      } 
      Item item = items.get(pos); 
      TextView titleText = (TextView) v.findViewById(R.id.list_item_title); 
      titleText.setText(item.title); 
      TextView subtitleText = (TextView) v.findViewById(R.id.list_item_subtitle); 
      subtitleText.setText(item.subtitle); 
      ImageView image = (ImageView) v.findViewById(R.id.list_image); 
      if (item.image.equalsIgnoreCase("default")) { 
       image.setImageResource(R.drawable.default_list_image); 
      } else { 
       // what ever 
      } 
      return v; 
     } 

    } 
} 

的main.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:orientation="vertical" > 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_margin="10dp" 
     android:onClick="morePressed" 
     android:text="@string/more_button" /> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

list_item.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="wrap_content" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/list_image" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_margin="5dp" 
     android:layout_gravity="center_vertical" 
     android:contentDescription="@string/list_image" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/list_item_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/list_item_subtitle" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textStyle="italic" /> 
    </LinearLayout> 

</LinearLayout> 

Item.java:

public class Item { 
    String image; 
    String title; 
    String subtitle; 
} 
+0

但是,它不起作用 –

+0

你有沒有正確連接你的按鈕。我創建了一個測試項目來測試我的理論,我幾乎忘了在按鈕上設置onClickListener。 – sanna

+0

我已經更新了我的代碼 –

0

adapter.notifyDataSetChanged();試試這個

+0

沒有響應,它不能更新即時,列表視圖仍然保持10而不是20 –