2012-01-20 32 views
9

Tôi có chế độ xem lưới trong đó có hai phần tử trong mỗi mục của nó, ảnh đầu tiên là hình ảnh và phần tử thứ hai là tiêu đề, tiêu đề không hiển thị khi khởi chạy của ứng dụng, nhưng tôi có nút bên ngoài chế độ xem lưới khi tôi nhấp vào đó, tôi muốn thay đổi mức hiển thị của tiêu đề của mục để hiển thị, vấn đề của tôi là tôi không thể truy cập từng tiêu đề của từng mục trong chế độ hiển thị theo ô. Khi tôi đặt khả năng hiển thị của tiêu đề (TextView) trong phương thức onClick của nút độc lập trong hoạt động của tôi, nó sẽ thay đổi mức hiển thị CHỈ cho mục FIRST trong chế độ xem lưới!cách truy cập vào phần tử cụ thể của mỗi mục xem lưới

phác thảo này đại diện cho giao diện của tôi, vì vậy các chức danh là vô hình trong đầu, nhưng khi tôi bấm vào "SetVisibilityButton", tôi muốn đặt chúng vào Visible:

Image1 Image2  Image3 
    Title1 Title2  Title3 

    Image4 Image5  Image6 
    Title4 Title5  Title6 

    Image7 Image8  Image9 
    Title7 Title8  Title9 


    ---------------------------- 
    SetVisibilityButton 
    ____________________________   

tôi đặt xem lưới trong tôi onCreate() hoạt động:

favorGrid = (GridView) findViewById(R.id.favorGrid); 
    favorGrid.setAdapter(adapter); 

Trong lớp ImageAdapter của tôi, đây là getView của tôi() phương pháp:

  @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      View MyView = convertView; 

      /*we define the view that will display on the grid*/ 

      //Inflate the layout 
      LayoutInflater li = getLayoutInflater(); 
      MyView = li.inflate(R.layout.favor_item, null); 

      // Add The Text!!! 
      TextView tv = (TextView)MyView.findViewById(R.id.title); 
      tv.setText(mTitles[position]); 

      // Add The Image!!!   
      ImageView iv = (ImageView)MyView.findViewById(R.id.favor_item_image); 
      iv.setImageResource(mThumbIds[position]); 
      return MyView; 
     } 

Để có được TextView tiêu đề từ hoạt động chính của tôi và thiết lập tầm nhìn của mình, tôi đã cố gắng:

TextView title = (TextView) findViewById(R.id.title); 
    title.setVisibility(View.VISIBLE); 

và cố gắng:

 // gv is the gridview (R.id.gridview) 
    TextView title = (TextView)gv.findViewById(R.id.title); 
    title.setVisibility(View.VISIBLE); 

và cố gắng:

 LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout); 
     TextView title = (TextView)layout.findViewById(R.id.title); 
     title.setVisibility(View.VISIBLE); 

Nhưng tất cả những giải pháp thiết khả năng hiển thị chỉ cho phần tử đầu tiên trong chế độ xem lưới.

tôi đã dành rất nhiều thời gian với vấn đề này nhưng tôi chưa tìm thấy một giải pháp, không ai có thể giúp tôi để sửa chữa nó xin vui lòng cảm ơn bạn trước

+1

bạn có thể đăng mã của mình không? – AD14

+0

ok, tôi sẽ sửa bài đăng của tôi –

Trả lời

27

này rất đơn giản:

GridView mGridView (Your object instance) 

final int size = mGridView.getChildCount(); 
for(int i = 0; i < size; i++) { 
    ViewGroup gridChild = (ViewGroup) mGridView.getChildAt(i); 
    int childSize = gridChild.getChildCount(); 
    for(int k = 0; k < childSize; k++) { 
    if(gridChild.getChildAt(k) instanceof TextView) { 
     gridChild.getChildAt(k).setVisibility(View.GONE); 
    } 
    } 
} 
+0

Cảm ơn bạn đã trả lời ur, tôi không hiểu dòng đầu tiên của mã của bạn nhưng tôi đã thử với mã này, nhưng không có gì: –

+0

favorGrid = (GridView) findViewById (R.id .favorGrid); favorGrid.setAdapter (bộ điều hợp); kích thước int cuối cùng = favorGrid.getChildCount(); cho (int i = 0; i

+0

Tuyệt vời! nó hoạt động! Cảm ơn bạn rất nhiều, nhưng tôi có một câu hỏi khác: nếu tôi có hai textview trong mỗi mục của xem lưới, làm thế nào tôi có thể chính xác phù thủy textview tôi muốn cập nhật? bởi vì ở đây: "gridChild.getChildAt (k) instanceof TextView "bạn chỉ xác định kiểu của khung nhìn (TextView), và không phải là một TextView cụ thể (nếu chúng ta có nhiều hơn một) –

3

Cách thích hợp để xem chế độ xem danh sách cho một vị trí cụ thể là vị trí tiếp theo:

View viewItem = list.getChildAt(position); 
if (viewItem != null) {     
    TextView text = (TextView) viewItem.findViewById(R.id.item); 
} 
Các vấn đề liên quan