2017-01-02 1 views
0

격자보기 내에 카드보기를 구현하려고합니다. 격자보기가 완벽하게 표시됩니다. 격자보기 항목을 터치해도 아무것도 보이지 않습니다. 그러나 그 작업 아래에 표시되는 텍스트를 클릭하면. 나는 This을 추천했지만 작동하지 않습니다.GridView onClickListener/onItemClickListener가 작동하지 않습니다.

고마워요.

내 코드는 다음과 같습니다

// Contact_Backup.java

public class Contact_Backup extends AppCompatActivity { 

     @Bind(R.id.gridview) 
     GridView gridview; 
     String[] contact_screen_array; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.contact_backup); 
      ButterKnife.bind(this); 
      contact_screen_array = getResources().getStringArray(R.array.TextScreen); 
      String[] contact_icon_array = getResources().getStringArray(R.array.IconScreen); 
      String concat = "\nContacts"; 
      gridview.setAdapter(new Custom_Adapter(getApplicationContext(),contact_icon_array,contact_screen_array,concat)); 
     } 
    } 

// Custom_Adapter

public class Custom_Adapter extends BaseAdapter { 

    Context contaxt; 
    String[] Array_text; 
    String[] Array_icon; 
    String concat; 
    LayoutInflater inflater; 

    public Custom_Adapter(Context context,String[] Array_icon, String[] Array_text, String concat) 
    { 
     this.contaxt = context; 
     this.Array_text = Array_text; 
     this.Array_icon = Array_icon; 
     this.concat=concat; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public int getCount() { 
     return Array_text.length; 
    } 
    @Override 
    public Object getItem(int position) { 
     return position; 
    } 
    @Override 
    public long getItemId(int position) { 
     return position; 
    } 


    @Bind(R.id.Screen_icon) 
    Button Screen_icon; 
    @Bind(R.id.Screen_text) 
    TextView Screen_text; 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) contaxt 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      grid = new View(contaxt); 
      grid = inflater.inflate(R.layout.new_app_card_layout, null); 
      ButterKnife.bind(this, grid); 
      Screen_text.setText(Array_text[position]+concat); 
      Screen_icon.setText(Array_icon[position]); 
      Typeface font = Typeface.createFromAsset(contaxt.getAssets(), "fonts/fontawesome-webfont.ttf"); 
      Screen_icon.setTypeface(font); 
     } else { 
      grid = (View) convertView; 
     } 

     grid.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("TAG::",""+position); 
      } 
     }); 
     return grid; 
    } 
} 

// contact_backup.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/main_backgorund" 
    > 
    <RelativeLayout 
     android:background="@color/transparent" 
     android:padding="5.0dip" 
     android:id="@+id/top_bar_screen" 
     android:layout_weight="0.2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:textColor="@color/newclr" 
      android:id="@+id/tvContacts" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/contacts" 
      android:shadowColor="#000000" 
      android:shadowDx="1.0" 
      android:shadowDy="1.0" 
      android:shadowRadius="2.0" 
      android:layout_centerVertical="true" /> 
     <TextView 
      android:textColor="@color/newclr" 
      android:id="@+id/tvLastBackup" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/last_backup" 
      android:shadowColor="#000000" 
      android:shadowDx="1.0" 
      android:shadowDy="1.0" 
      android:shadowRadius="2.0" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" /> 
    </RelativeLayout> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:id="@+id/v1" 
     android:layout_below="@+id/top_bar_screen" 
     android:background="@color/newclr"/> 

    <GridLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/swipe" 
     android:layout_below="@+id/v1" 
     android:paddingTop="20sp" 
     android:paddingLeft="10sp" 
     android:paddingRight="10sp" 
     android:layout_weight="0.6" 
     > 

    <GridView 
     android:id="@+id/gridview" 
     android:layout_width="fill_parent" 
     android:columnWidth="90dp" 
     android:numColumns="auto_fit" 
     android:verticalSpacing="10dp" 
     android:horizontalSpacing="10dp" 
     android:layout_height="wrap_content" /> 
    </GridLayout> 

    <!-- com.startapp.android.publish.banner.Banner 
     android:id="@+id/startAppBanner1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_weight="0.2" 
     android:layout_centerHorizontal="true" /--> 


</RelativeLayout> 

// new_app_card_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/fssr_card" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    card_view:cardBackgroundColor="@color/transparent" 
    > 

    <LinearLayout 
     android:gravity="center" 
     android:orientation="vertical" 
     android:id="@+id/Contacts_Button_Layout" 
     android:background="@drawable/linearlayout_normal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_marginLeft="-1.0dip" 
     android:layout_weight="1.0" 
     > 

     <Button 
      android:textSize="35.0sp" 
      android:textColor="@color/newclr" 
      android:layout_gravity="center" 
      android:id="@+id/Screen_icon" 
      android:background="@null" 
      android:padding="20sp" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/fa_icon_contact" 
      android:drawablePadding="5.0dip" 
      android:textAllCaps="false" /> 

     <TextView 
      android:textSize="15.0sp" 
      android:textColor="@color/white" 
      android:layout_gravity="center" 
      android:textAlignment="center" 
      android:id="@+id/Screen_text" 
      android:background="@color/newclr" 
      android:padding="5sp" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/contactsbackup" 
      android:textAllCaps="false"/> 

    </LinearLayout> 
</android.support.v7.widget.CardView> 

답변

0

실제 gridview 개체에 수신기를 설정하십시오. gridView.setOnItemClickListener(new OnItemClickListener()...);

+0

은 내가 Contact_Backup.java 클래스에 그것을 시도하지만 그 코드는 영향을받지했다. –

+0

두 시간 동안 정말 고마워요 .... :) –

0

이 시도 ,

public class Contact_Backup extends AppCompatActivity { 

     @Bind(R.id.gridview) 
     GridView gridview; 
     String[] contact_screen_array; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.contact_backup); 
      ButterKnife.bind(this); 
      contact_screen_array = getResources().getStringArray(R.array.TextScreen); 
      String[] contact_icon_array = getResources().getStringArray(R.array.IconScreen); 
      String concat = "\nContacts"; 
      gridview.setAdapter(new Custom_Adapter(getApplicationContext(),contact_icon_array,contact_screen_array,concat)); 
      gridview.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        for(int i=0;i<contact_screen_array.length;i++) { 
         Log.d("TAG::", "Position"+contact_screen_array[i]); 
        } 
       } 
      }); 
     } 
    } 
+0

어댑터 클래스에서 리스너를 제거하고 액티비티에서 사용합니다. –

+0

시도했지만 친구가 작동하지 않습니다 ... contact_screen_array Textview를 클릭하면 작동합니다. .. –

+0

두 시간 동안 정말 고마워요 .... :) –

-1

내가이 업데이트 된 코드를 다시 확인 class.please 당신의 사용자 정의 어댑터을 업데이트 한이보십시오.

public class Custom_Adapter extends BaseAdapter { 

    Context contaxt; 
    String[] Array_text; 
    String[] Array_icon; 
    String concat; 
    LayoutInflater inflater; 

    public Custom_Adapter(Context context,String[] Array_icon, String[] Array_text, String concat) 
    { 
     this.contaxt = context; 
     this.Array_text = Array_text; 
     this.Array_icon = Array_icon; 
     this.concat=concat; 
     inflater = (LayoutInflater)context. 
       getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public int getCount() { 
     return Array_text.length; 
    } 
    @Override 
    public Object getItem(int position) { 
     return position; 
    } 
    @Override 
    public long getItemId(int position) { 
     return position; 
    } 


    @Bind(R.id.Screen_icon) 
    Button Screen_icon; 
    @Bind(R.id.Screen_text) 
    TextView Screen_text; 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) contaxt 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      grid = new View(contaxt); 
      grid = inflater.inflate(R.layout.new_app_card_layout, null); 
      ButterKnife.bind(this, grid); 
      Screen_text.setText(Array_text[position]+concat); 
      Screen_icon.setText(Array_icon[position]); 
      Typeface font = Typeface.createFromAsset(contaxt.getAssets(), "fonts/fontawesome-webfont.ttf"); 
      Screen_icon.setTypeface(font); 

      grid.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.d("TAG::",""+position); 
       } 
      }); 

     } else { 
      grid = (View) convertView; 

      grid.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.d("TAG::",""+position); 
       } 
      }); 
     } 
     return grid; 
    } 
} 

희망이 있으면 도움이됩니다.

+0

나는 노력했지만 그것은 작동하지 않습니다 ... 같은 문제는 단지 내가 contact_screen_array Textview를 클릭했을 때 발생합니다 ... –

+1

당신이 원하는 동일한 "android : id ="@ + id/Screen_icon ""이 버튼을 사용하여 완료 했습니까? –

+0

예. "android : id ="@ + id/Screen_icon "이 Button입니까? –

0

를 사용하여 A의 gridview 항목을 클릭이 방법 :

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     // your action when gridView item is clicked 

     } 
    }); 
+0

작동하지 않습니다 ... :( –

+0

@ JigneshM.Mehta 작동하지 않는다는 것을 의미합니까? 셀을 클릭 한 후에 무엇을하고 싶습니까? gridview가있는 활동에서 onITEMclicklistener를 호출해야합니다. – babak

+0

친구, 고마워요. 실제로 문제가되지 않습니다. 내 문제는 단추를 사용자 지정 격자 내에서 사용하는 것입니다. 격자를 클릭하면 단추 클릭으로 Grid 코드가 무시되므로 원하는대로 작동하지 않습니다. Textview 대신 Button을 사용합니다. 다음은 도움을 주셔서 감사합니다. n 코드가 잘 작동하고 있습니다. :) –

0

마지막으로, 나는 성공. 여기 코드가 있습니다.

// new_app_card_layout.xml에서 Button 대신 Textview를 사용하십시오. 도움을

<TextView 
     android:textSize="35.0sp" 
     android:textColor="@color/newclr" 
     android:layout_gravity="center" 
     android:id="@+id/Screen_icon" 
     android:background="@null" 
     android:padding="20sp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/fa_icon_contact" 
     android:drawablePadding="5.0dip" 
     android:textAllCaps="false" 
     android:textAlignment="center" /> 

너무 감사

그냥 업데이트, 당신의 모든 ... :)

관련 문제