2014-01-11 4 views
0

Привет, я хочу создать onClickListener() в классе Global.java, а затем передать его переменные, поэтому я могу повторно использовать прослушиватель кликов для разных списков внутри фрагментов. что я пробовал до сих пор, но я получаю несколько ошибок.создать глобальный OnClickListener Android

тогда в моей деятельности я сделать это

listView.setOnClickListener(Global.onClickListener(this, v, myAdapter, position)); 

Эти ошибки я получаю в Global.java

Syntax error on token ",", ; expected 
Syntax error on token ",", ; expected 
Syntax error on token ",", ; expected 
Syntax error on token "(", ; expected 
Syntax error on token ")", ; expected 
void is an invalid type for the variable onClick 
Cannot instantiate the type DialogInterface.OnClickListener 

ответ

1

Вы должны создать интерфейс

public interface MyOnItemSelectedListener { 
    void onItemSelected(TextView t); 
} 

и у вас есть пари деятельность нт осуществить это

public class MainActivity extends Activity implements MyOnItemSelectedListener { 

    .... 

} 

затем, в вашем ListView фрагменте вы создаете переменную, которая имеет этот тип

private MyOnItemSelectedListener listener; 

и в onAttach методе фрагмента вы убедитесь, что деятельность, на деле реализуют интерфейс и затем инициализировать его

if(activity instanceof MyOnItemSelectedListener) { 
    listener = (MyOnItemSelectedListener) activity; 
} else { 
    throw new ClassCastException(activity.toString() + 
     " must implement MyOnItemSelectedListener "); 
} 

Теперь все, что вам нужно сделать, это установить щелчок слушателя вашего ListView и вызвать метод, определенный в интерфейсе на прослушивателе

listView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     TextView selected = (TextView) view; 
     listener.onItemSelected(selected); 
    } 

}); 

Наконец, вы реализуете метод onItemSelected в вашей деятельности

@Override 
public void onItemSelected(TextView t) { 
    String content = t.getText().toString(); 
} 

И вы сделали.