установить clicklistner на просмотр изображений - PullRequest
1 голос
/ 10 марта 2012

Я работаю с расширяемым списком. В этом мне нужно использовать способ просмотра изображений с кликом. Я пытался следовать, но не работает. Это дает исключение нулевого указателя.

вот мой адаптер xml и listview. Мне нужно поставить событие клика на картинке. от нормальной активности onclicklistner работает безупречно, но выдает ошибку, если вы помещаете это в ExpandableListActivity.

Заранее спасибо ..

public class ExpList extends ExpandableListActivity
{
//    static final String parent_node[] = { "grey", "blue", "yellow", "red" };

String parent_node[];

static final String shades[][] = {
  {
    "lightgrey","#D3D3D3",
    "dimgray","#696969",
    "sgi gray 92","#EAEAEA"
  }, {},
  {
    "dodgerblue 2","#1C86EE",
    "steelblue 2","#5CACEE",
    "powderblue","#B0E0E6"
  }, {}
};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
    super.onCreate(icicle);
    setContentView(R.layout.main);   


    LayoutInflater group_inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
     View group_layout = group_inflater.inflate(R.layout.group_row, null);

    ImageView img_call = (ImageView)group_layout.findViewById(R.id.imgcall);

    img_call.setOnClickListener(new OnClickListener() 
    {           
  @Override
  public void onClick(View v) 
      {
        Toast.makeText(getBaseContext(), "clicked...", Toast.LENGTH_SHORT).show();
     }); 

SimpleExpandableListAdapterWithEmptyGroups expListAdapter =
            new SimpleExpandableListAdapterWithEmptyGroups(
                this,
                createGroupList(),                      
                R.layout.group_row,                     
                new String[] { "colorName" },           
                new int[] { R.id.groupname },           
                createChildList(),                      
                R.layout.child_row,                     
                new String[] { "shadeName", "rgb" },    
                new int[] { R.id.childname, R.id.rgb }  
            );
        setListAdapter( expListAdapter );}

И мой групповой просмотр 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:src="@drawable/expander_group"
    android:id="@+id/explist_indicator"
    android:layout_width="35px"
    android:layout_height="35px"/>


<ImageView 
    android:src="@drawable/contact_thumbnail"
    android:id="@+id/img_contact_thumbnail"
    android:layout_width="50px"
    android:layout_height="50px"/>

<TextView
    android:id="@+id/groupname"
    android:layout_width="190px"
    android:layout_height="match_parent"
    android:paddingLeft="30px"
    android:textSize="16px"
    android:textStyle="bold" />

<ImageView 
    android:id="@+id/imgcall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/call"
    android:clickable="true" />
</LinearLayout>

EDIT
Теперь проблема NullPointerException решена. Но у меня возникла новая проблема, что onclicklistner не работает. Никакой тост или что-либо еще написанное в этом разделе не выполняется. Я отладил программу и обнаружил, что код не возвращается в onclicklistner при нажатии на viewview.

Есть идеи?

1 Ответ

1 голос
/ 10 марта 2012

Вы можете попробовать это, надеюсь, что это полностью сработает.Просто добавьте две строки в xml внутри imageview, а затем напишите функцию для прослушивания нажатия кнопки в вашем классе активности:

<ImageView 
    android:id="@+id/imgcall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/call"
    android:clickable="true" 
    android:onClick="onClickHandler"/>

А в классе активности:

public void onClickHandler (View v) {
    switch (v.getId()) {
        case R.id.imgcall:
            // do what ever you want here ...
            break;
    }
}
...