2016-08-04 66 views
0

我試圖創建一個自定義適配器,以便在運行時將項目添加到網格(使用GridView),以響應用戶單擊按鈕。當用戶使用自定義適配器單擊按鈕時向GridView添加項目

添加到網格中的每個項目都包含2個TextView項目和一個ImageView項目。要存儲在每個TextView項目中的文本由用戶在點擊按鈕之前提供。

我無法找到如何做到這一點網上的任何例子,所以我只是看着例子,包括那個初始化網格中的應用程序啓動這個功能,比如當一個自定義網格適配器:

https://www.caveofprogramming.com/guest-posts/custom-gridview-with-imageview-and-textview-in-android.html

唯一的問題是我沒有可以預編程的字符串數組,因爲這些是由用戶在運行時輸入確定的,每個添加到網格的對象只應在按鈕被單擊時纔會出現,否則,屏幕應該是空白的。

我嘗試用ArrayList替換字符串數組,然後添加一個可以在單擊該按鈕後調用的方法,該方法向ArrayList添加一個String,然後調用notifyDataSetChanged();可悲的是,這似乎並不奏效。見適用代碼片段如下:

private List<String> list = new ArrayList<>(); 


    public void addString(String s) { 
    list.add(s); 
    this.notifyDataSetChanged(); 

    } 

public View getView(int position, View convertView, ViewGroup parent) { 

    Viewt view; 

    LayoutInflater inflater = (LayoutInflater) mContext. 
      getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

     convertView = inflater.inflate(R.layout.l, parent, false); 

     view = new Viewt(); 

     view.tview = (TextView) convertView.findViewById(R.id.textView); 

     convertView.setTag (view); 

     } else { 

     view = (Viewt) convertView.getTag(); 

     } 

     view.tview.setText(list.get(position)); 

     return convertView; 
     } 

    public static class Viewt { 

    TextView tviewone; 

} 

回答

0

你是不是在你的適配器進行convertView.setTag(視圖)和你想從convertView.getTag()在適配器的視圖。

if (convertView == null) { 

    convertView = inflater.inflate(R.layout.l, parent, false); 

    view = new Viewt(); 

    view.tview = (TextView) convertView.findViewById(R.id.textView); 

    // add below line in adapter. 
    convertView.setTag (view); 

    } else { 

    view = (Viewt) convertView.getTag(); 

    } 

    view.tview.setText(list.get(position)); 

    return convertView; 
    } 
+0

嗨拉曼,你是對的 - 我剛剛添加它,但它沒有任何區別我的代碼工作:( – javapalava

相關問題