2015-07-01 2 views
1

Я хочу Gridview с изображением и EditText. Я хочу показать изображение в полноэкранном режиме при щелчке и выбрать, что Gridview элемент для удаления по длинному клику. Но GridView события OnItemLongClickListener() и OnItemClickListener() не отвечают EditText, хотя они работают, когда установлен Edittextandroid:focusable="false". Я пробовал много разных решений, но никто из них не работает. Вот мой код:GridView onclick не отвечает EditText

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <GridView 
    android:numColumns="2" 
    android:gravity="center" 
    android:columnWidth="100dp" 
    android:stretchMode="columnWidth" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/grid" 
    /> 
    </LinearLayout> 

grid_single.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="5dp" 
android:orientation="vertical" 
android:id="@+id/lin" 
> 

<ImageView 
    android:id="@+id/grid_image" 
    android:layout_width="50dp" 
    android:layout_height="50dp"> 
</ImageView> 

<EditText 
    android:id="@+id/grid_text" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_marginTop="15dp" > 

</EditText> 
</LinearLayout> 

Main_activity.java

//import not included 
public class MainActivity extends Activity { 
GridView grid; 

String[] web = { 
     "Google", 
     "Github", 
     "Instagram", 
     "Facebook", 


} ; 
int[] imageId = { 
     R.drawable.ic_launcher, 
     R.drawable.ic_launcher, 
     R.drawable.ic_launcher, 
     R.drawable.ic_launcher 

}; 
private LayoutParams layoutParams; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    CustomGrid adapter = new CustomGrid(MainActivity.this, web, imageId); 
    grid=(GridView)findViewById(R.id.grid); 
      grid.setAdapter(adapter); 

      grid.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

       @Override 
       public boolean onItemLongClick(AdapterView<?> parent, 
         View view, int position, long id) { 
        // TODO Auto-generated method stub 

         grid.setItemChecked(position, true); 
        View tv=(View) grid.getChildAt(position); 
        tv.setBackgroundColor(Color.LTGRAY); 
        return false; 
       } 


      }); 
      grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, 
         View view, int position, long id) { 
        // TODO Auto-generated method stub 
        Toast.makeText(MainActivity.this, "You Clicked at " +web[+ position], Toast.LENGTH_SHORT).show(); 
       } 
      }); 
} 
} 

CustomGrid.java

//import not included 
    public class CustomGrid extends BaseAdapter{ 
    private Context mContext; 
    private final String[] web; 
    private final int[] Imageid; 

    public CustomGrid(Context c,String[] web,int[] Imageid) { 
     mContext = c; 
     this.Imageid = Imageid; 
     this.web = web; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return web.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.grid_single, null); 
      EditText textView = (EditText) grid.findViewById(R.id.grid_text); 

      ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image); 
     // Button b1=(Button)grid.findViewById(R.id.button1); 
      textView.setText(web[position]); 


      imageView.setImageResource(Imageid[position]); 
     } else { 
      grid = (View) convertView; 
     } 

     return grid; 
    } 
} 

Любая помощь будет признателен .. спасибо заранее ..

+0

«Редактировать набор текста», что это значит? –

+0

Вопрос редактирован. –

ответ

0

попробуйте добавить эти строки в вашем EditText

android:focusable="false" 
android:focusableInTouchMode="false" 
+0

Я попытался использовать это, но я хочу, чтобы редактируемый текст редактировался. Можете ли вы предложить что-то еще? –

+0

редактирование текста будет редактируемым, но фокус, который не содержит фокуса, которые позволяют получить доступ к onItemClick. –

0

Итак, наконец, решить эту проблему. Я использовал gesturelistener и обнаружил движение. Спасибо.

Смежные вопросы