Android 如何从DataAdapter调用片段?
Ihis是我的适配器,名为TicketAdapter.javaAndroid 如何从DataAdapter调用片段?,android,Android,Ihis是我的适配器,名为TicketAdapter.java public class TicketAdapter extends ArrayAdapter<Ticket> { protected static final String LOG_TAG = TicketAdapter.class.getSimpleName(); private List<Ticket> items; private int l
public class TicketAdapter extends ArrayAdapter<Ticket> {
protected static final String LOG_TAG = TicketAdapter.class.getSimpleName();
private List<Ticket> items;
private int layoutResourceId;
private Context context;
public TicketAdapter(Context context, int layoutResourceId, List<Ticket> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TicketHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TicketHolder();
holder.ticket = items.get(position);
holder.removeTicketButton = (ImageButton)row.findViewById(R.id.ticket_remove);
holder.removeTicketButton.setTag(holder.ticket);
holder.settingTicketButton=(ImageButton)row.findViewById(R.id.ticket_setting);
holder.settingTicketButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment freeFragment = new FreeFragment();
if (freeFragment != null)
switchFragment(freeFragment);
Log.e("adapter_click_setting","adapter_click_setting");
}
});
holder.name = (TextView)row.findViewById(R.id.ticket_name);
setNameTextChangeListener(holder);
row.setTag(holder);
setupItem(holder);
return row;
}
private void switchFragment(Fragment newFragment)
{
if (context == null)
{
Log.e("null_context","nulllll");
return;
}
if (context instanceof AddNewTicket) {
Log.e("meth_calling","method_calling");
AddNewTicket feeds = (AddNewTicket) context;
feeds.switchContent(newFragment);
}
}
private void setupItem(TicketHolder holder) {
holder.name.setText(holder.ticket.getName());
}
public static class TicketHolder
{
Ticket ticket;
TextView name;
ImageButton settingTicketButton;
ImageButton removeTicketButton;
}
private void setNameTextChangeListener(final TicketHolder holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.ticket.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
public class TicketAdapter extends ArrayAdapter<Ticket> {
protected static final String LOG_TAG = TicketAdapter.class.getSimpleName();
private List<Ticket> items;
private int layoutResourceId;
private Context context;
public TicketAdapter(Context context, int layoutResourceId, List<Ticket> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TicketHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TicketHolder();
holder.ticket = items.get(position);
holder.removeTicketButton = (ImageButton)row.findViewById(R.id.ticket_remove);
holder.removeTicketButton.setTag(holder.ticket);
holder.settingTicketButton=(ImageButton)row.findViewById(R.id.ticket_setting);
holder.settingTicketButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment freeFragment = new FreeFragment();
if (freeFragment != null)
switchFragment(freeFragment);
Log.e("adapter_click_setting","adapter_click_setting");
}
});
holder.name = (TextView)row.findViewById(R.id.ticket_name);
setNameTextChangeListener(holder);
row.setTag(holder);
setupItem(holder);
return row;
}
private void switchFragment(Fragment newFragment)
{
if (context == null)
{
Log.e("null_context","nulllll");
return;
}
if (context instanceof AddNewTicket) {
Log.e("meth_calling","method_calling");
AddNewTicket feeds = (AddNewTicket) context;
feeds.switchContent(newFragment);
}
}
private void setupItem(TicketHolder holder) {
holder.name.setText(holder.ticket.getName());
}
public static class TicketHolder
{
Ticket ticket;
TextView name;
ImageButton settingTicketButton;
ImageButton removeTicketButton;
}
private void setNameTextChangeListener(final TicketHolder holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.ticket.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
这是我的主要活动AddNewTicket.java
public class AddNewTicket extends Activity {
private TicketAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket_listview);
setupListViewAdapter();
setupAddTicketButton();
}
public void removeTicketOnClickHandler(View v)
{
Ticket itemToRemove = (Ticket)v.getTag();
adapter.remove(itemToRemove);
}
private void setupListViewAdapter()
{
adapter = new TicketAdapter(AddNewTicket.this, R.layout.ticket_list_item, new ArrayList<Ticket>());
ListView TicketListView = (ListView)findViewById(R.id.ticketlist);
TicketListView.setAdapter(adapter);
}
private void setupAddTicketButton() {
findViewById(R.id.free).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.paid).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.donation).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
}
}
public class AddNewTicket extends FragmentActivity {
private TicketAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket_listview);
setupListViewAdapter();
setupAddTicketButton();
}
public void removeTicketOnClickHandler(View v)
{
Ticket itemToRemove = (Ticket)v.getTag();
adapter.remove(itemToRemove);
}
private void setupListViewAdapter()
{
adapter = new TicketAdapter(AddNewTicket.this, R.layout.ticket_list_item, new ArrayList<Ticket>());
ListView TicketListView = (ListView)findViewById(R.id.ticketlist);
TicketListView.setAdapter(adapter);
}
private void setupAddTicketButton() {
findViewById(R.id.free).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.paid).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.donation).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
}
public void switchContent(android.support.v4.app.Fragment newFragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, newFragment).commit();
}
}
试试这个
public class TicketAdapter extends ArrayAdapter<Ticket> {
protected static final String LOG_TAG = TicketAdapter.class.getSimpleName();
private List<Ticket> items;
private int layoutResourceId;
private Context context;
public TicketAdapter(Context context, int layoutResourceId, List<Ticket> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TicketHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TicketHolder();
holder.ticket = items.get(position);
holder.removeTicketButton = (ImageButton)row.findViewById(R.id.ticket_remove);
holder.removeTicketButton.setTag(holder.ticket);
holder.settingTicketButton=(ImageButton)row.findViewById(R.id.ticket_setting);
holder.settingTicketButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment freeFragment = new FreeFragment();
if (freeFragment != null)
switchFragment(freeFragment);
}
});
holder.name = (TextView)row.findViewById(R.id.ticket_name);
setNameTextChangeListener(holder);
row.setTag(holder);
setupItem(holder);
return row;
}
private void switchFragment(Fragment newFragment) {
if (context == null)
return;
if (context instanceof MainActivity) {
MainActivity feeds = (MainActivity) context;
feeds.switchContent(newFragment);
}
}
private void setupItem(TicketHolder holder) {
holder.name.setText(holder.ticket.getName());
}
public static class TicketHolder
{
Ticket ticket;
TextView name;
ImageButton settingTicketButton;
ImageButton removeTicketButton;
}
private void setNameTextChangeListener(final TicketHolder holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.ticket.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
}
TicketAdapter.java
public class TicketAdapter extends ArrayAdapter<Ticket> {
protected static final String LOG_TAG = TicketAdapter.class.getSimpleName();
private List<Ticket> items;
private int layoutResourceId;
private Context context;
public TicketAdapter(Context context, int layoutResourceId, List<Ticket> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TicketHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TicketHolder();
holder.ticket = items.get(position);
holder.removeTicketButton = (ImageButton)row.findViewById(R.id.ticket_remove);
holder.removeTicketButton.setTag(holder.ticket);
holder.settingTicketButton=(ImageButton)row.findViewById(R.id.ticket_setting);
holder.settingTicketButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment freeFragment = new FreeFragment();
if (freeFragment != null)
switchFragment(freeFragment);
Log.e("adapter_click_setting","adapter_click_setting");
}
});
holder.name = (TextView)row.findViewById(R.id.ticket_name);
setNameTextChangeListener(holder);
row.setTag(holder);
setupItem(holder);
return row;
}
private void switchFragment(Fragment newFragment)
{
if (context == null)
{
Log.e("null_context","nulllll");
return;
}
if (context instanceof AddNewTicket) {
Log.e("meth_calling","method_calling");
AddNewTicket feeds = (AddNewTicket) context;
feeds.switchContent(newFragment);
}
}
private void setupItem(TicketHolder holder) {
holder.name.setText(holder.ticket.getName());
}
public static class TicketHolder
{
Ticket ticket;
TextView name;
ImageButton settingTicketButton;
ImageButton removeTicketButton;
}
private void setNameTextChangeListener(final TicketHolder holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.ticket.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
public class TicketAdapter extends ArrayAdapter<Ticket> {
protected static final String LOG_TAG = TicketAdapter.class.getSimpleName();
private List<Ticket> items;
private int layoutResourceId;
private Context context;
public TicketAdapter(Context context, int layoutResourceId, List<Ticket> items) {
super(context, layoutResourceId, items);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
TicketHolder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new TicketHolder();
holder.ticket = items.get(position);
holder.removeTicketButton = (ImageButton)row.findViewById(R.id.ticket_remove);
holder.removeTicketButton.setTag(holder.ticket);
holder.settingTicketButton=(ImageButton)row.findViewById(R.id.ticket_setting);
holder.settingTicketButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment freeFragment = new FreeFragment();
if (freeFragment != null)
switchFragment(freeFragment);
Log.e("adapter_click_setting","adapter_click_setting");
}
});
holder.name = (TextView)row.findViewById(R.id.ticket_name);
setNameTextChangeListener(holder);
row.setTag(holder);
setupItem(holder);
return row;
}
private void switchFragment(Fragment newFragment)
{
if (context == null)
{
Log.e("null_context","nulllll");
return;
}
if (context instanceof AddNewTicket) {
Log.e("meth_calling","method_calling");
AddNewTicket feeds = (AddNewTicket) context;
feeds.switchContent(newFragment);
}
}
private void setupItem(TicketHolder holder) {
holder.name.setText(holder.ticket.getName());
}
public static class TicketHolder
{
Ticket ticket;
TextView name;
ImageButton settingTicketButton;
ImageButton removeTicketButton;
}
private void setNameTextChangeListener(final TicketHolder holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
holder.ticket.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
AddNewTicket.java
public class AddNewTicket extends Activity {
private TicketAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket_listview);
setupListViewAdapter();
setupAddTicketButton();
}
public void removeTicketOnClickHandler(View v)
{
Ticket itemToRemove = (Ticket)v.getTag();
adapter.remove(itemToRemove);
}
private void setupListViewAdapter()
{
adapter = new TicketAdapter(AddNewTicket.this, R.layout.ticket_list_item, new ArrayList<Ticket>());
ListView TicketListView = (ListView)findViewById(R.id.ticketlist);
TicketListView.setAdapter(adapter);
}
private void setupAddTicketButton() {
findViewById(R.id.free).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.paid).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.donation).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
}
}
public class AddNewTicket extends FragmentActivity {
private TicketAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ticket_listview);
setupListViewAdapter();
setupAddTicketButton();
}
public void removeTicketOnClickHandler(View v)
{
Ticket itemToRemove = (Ticket)v.getTag();
adapter.remove(itemToRemove);
}
private void setupListViewAdapter()
{
adapter = new TicketAdapter(AddNewTicket.this, R.layout.ticket_list_item, new ArrayList<Ticket>());
ListView TicketListView = (ListView)findViewById(R.id.ticketlist);
TicketListView.setAdapter(adapter);
}
private void setupAddTicketButton() {
findViewById(R.id.free).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.paid).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
findViewById(R.id.donation).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert(new Ticket(""), 0);
}
});
}
public void switchContent(android.support.v4.app.Fragment newFragment) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, newFragment).commit();
}
}
AddNewTicket的和xml文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:id="@+id/main_interface"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
</RelativeLayout>
</FrameLayout>
在你的回答中,主要的活动是什么??是否需要在MainActivity中创建switchContent方法??请尽快回复..所以MainActivity是您的主要活动,您可以在其中创建适配器,其他我已经实现了给定的代码。请看一下代码,告诉我是否有任何更正。我已经添加了主活动代码。请查看编辑后的代码。在这段代码中,我创建了switchContent方法。在那种方法下需要写什么??请尽快回复。您尚未在AddNewTicket.java文件中编写以下方法。如果我不写这个方法,那么在AddNewTicket.java文件中写这个方法就会出错。public void switchContentandroid.support.v4.app.Fragment newFragment{//TODO自动生成的方法存根}为什么我需要在AddNewTicket中使用此方法?您是否从我的答案中复制了AddNewTicket的xml文件?抱歉,这是我的错误。是的,您的代码工作正常。非常感谢您的支持。