Вызвать метод фрагмента из адаптера
У меня есть метод sendData()
в моем фрагменте. Этот метод запускает новое действие. Я хочу вызвать этот метод из моего ArrayAdapter
.
Вот мой код: -
HomeFragment.java
stagAdaper = new StaggeredAdapter(myContext, android.R.layout.simple_list_item_1, getList);
mGridView.setAdapter(stagAdaper);
private void sendData(int position)
{
myDialog = new ProgressDialog(myContext).show(getActivity(), "Fetching news..", "Just a moment");
myDialog.getWindow().setContentView(R.layout.openarticlewaitprogress);
myDialog.getWindow().setTitle("Loading..");
myDialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
new NewsDetails(myDialog);
Intent nIntent = new Intent(getActivity(),Details.class);
String Body=getList.get(position).getBody();
newsIntent.putExtra("Body", Body);
startActivity(nIntent);
}
StaggeredAdapter.java
viewHolder.layGridLayout.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//viewHolder.layGridLayout.setForeground(R.drawable.foreground_selector);
}
});
return convertView;
}
Как я могу это сделать?
Ответы
Ответ 1
Решение 1:
Сделайте адаптер внутренним классом вашего фрагмента, чтобы вы могли напрямую вызвать метод.
Решение 2:
Обновите конструктор адаптера, чтобы принять фрагмент в качестве параметра.
Что-то вроде:
customAdapter = new CustomAdapter(myContext, android.R.layout.simple_list_item_1, getList, HomeFragment.this);
и обновите конструктор адаптера:
public CustomAdapter(Context context, int id, HomeFragment fragment) {
this.fragment = fragment;
}
тогда вы вызываете методы с использованием переменной фрагмента.
fragment.doSomething();
Ответ 2
Я знаю, что поздно ответить, но есть еще два способа сделать это:
Ответ 3
Вы можете сделать метод sendData как статический
public static void sendData(int position)
{
......
}
n называть его
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
HomeFragment.sendData(position)
........
}