Android 如何在自定义适配器中写入有效上下文
我使用一个定制的适配器向Sq lite传递数据。我需要在适配器类的以下方法中传递片段的引用。如何才能做到这一点? **要编写什么来代替“FragmentGroups.getActivity()”Android 如何在自定义适配器中写入有效上下文,android,android-fragments,adapter,Android,Android Fragments,Adapter,我使用一个定制的适配器向Sq lite传递数据。我需要在适配器类的以下方法中传递片段的引用。如何才能做到这一点? **要编写什么来代替“FragmentGroups.getActivity()” public void Set\u refereash\u Data(){ data.clear(); db=new SendJobDataBase(new FragmentGroups.getActivity()); ArrayList contact_array_from_db=db.Get_Con
public void Set\u refereash\u Data(){
data.clear();
db=new SendJobDataBase(new FragmentGroups.getActivity());
ArrayList contact_array_from_db=db.Get_Contacts();
对于(int i=0;i
GroupAdapter.java:
package com.sunmobile.navigationdrawer;
import java.util.ArrayList;
import com.sunmobileappnow.mobileappnow.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class GroupAdapter extends ArrayAdapter<member> {
GroupAdapter gdb;
Activity activity;
int layoutResourceId;
member user;
ArrayList<member> data = new ArrayList<member>();
ListView l1;
SendJobDataBase db;
public GroupAdapter(Activity act, int layoutResourceId,
ArrayList<member> data) {
super(act, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.activity = act;
this.data = data;
notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
MemberHolder holder = null;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(activity);
row = inflater.inflate(layoutResourceId, parent, false);
holder = new MemberHolder();
holder.name = (TextView) row.findViewById(R.id.user_name_txt);
holder.delete = (Button) row.findViewById(R.id.btn_delete);
row.setTag(holder);
} else {
holder = (MemberHolder) row.getTag();
}
user = data.get(position);
holder.name.setText(user.getName());
holder.delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
AlertDialog.Builder adb = new AlertDialog.Builder(activity);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to delete ");
final int user_id = Integer.parseInt(v.getTag().toString());
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Ok",
new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// MyDataObject.remove(positionToRemove);
SendJobDataBase dBHandler = new SendJobDataBase(
activity.getApplicationContext());
dBHandler.Delete_Contact(user_id);
GroupAdapter.this.onResume();
}
});
adb.show();
}
});
return row;
}
public void Set_Referash_Data() {
data.clear();
db = new SendJobDataBase(FragmentGroups.this.getActivity());
ArrayList<member> contact_array_from_db = db.Get_Contacts();
for (int i = 0; i < contact_array_from_db.size(); i++) {
int tidno = contact_array_from_db.get(i).getID();
String name = contact_array_from_db.get(i).getName();
data.add(cnt);
}
db.close();
gdb = new GroupAdapter(FragmentGroups.this.getActivity(), R.layout.listrow_item, data);
l1.setAdapter(gdb);
gdb.notifyDataSetChanged();
}
class MemberHolder {
TextView name;
Button delete;
}
}
package com.sunmobile.navigationdrawer;
导入java.util.ArrayList;
导入com.sunmobileapnow.mobileappnow.R;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.TextView;
公共类GroupAdapter扩展了ArrayAdapter{
分组适配器gdb;
活动;
国际布局资源;
会员用户;
ArrayList数据=新的ArrayList();
列表视图l1;
数据库数据库数据库;
公共组适配器(活动法案,内部布局资源ID,
ArrayList数据){
超级(act、布局资源、数据);
this.layoutResourceId=layoutResourceId;
这个活动=行动;
这个数据=数据;
notifyDataSetChanged();
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
MemberHolder=null;
if(行==null){
LayoutFlater充气机=LayoutFlater.from(活动);
行=充气机。充气(layoutResourceId,父级,false);
holder=新成员holder();
holder.name=(TextView)row.findViewById(R.id.user\u name\u txt);
holder.delete=(按钮)row.findViewById(R.id.btn_delete);
row.setTag(支架);
}否则{
holder=(MemberHolder)行。getTag();
}
user=data.get(位置);
holder.name.setText(user.getName());
holder.delete.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(最终视图v){
AlertDialog.Builder adb=新建AlertDialog.Builder(活动);
adb.setTitle(“删除?”);
adb.setMessage(“您确定要删除吗”);
final int user_id=Integer.parseInt(v.getTag().toString());
adb.setNegativeButton(“取消”,空);
adb.setPositiveButton(“确定”,
新建AlertDialog.OnClickListener(){
@凌驾
公共void onClick(对话框接口对话框,
int(其中){
//MyDataObject.remove(位置删除);
SendJobDataBase dBHandler=新建SendJobDataBase(
activity.getApplicationContext());
删除联系人(用户id);
GroupAdapter.this.onResume();
}
});
adb.show();
}
});
返回行;
}
公共无效集\u引用\u数据(){
data.clear();
db=新的SendJobDataBase(FragmentGroups.this.getActivity());
ArrayList contact_array_from_db=db.Get_Contacts();
对于(int i=0;i
碎片组:
package com.sunmobile.navigationdrawer;
import java.util.ArrayList;
import java.util.List;
import android.app.Fragment;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.sunmobileappnow.mobileappnow.PasswordDB;
import com.sunmobileappnow.mobileappnow.R;
public class FragmentGroups extends Fragment {
SendJobDataBase db;
Cursor cursor;
ArrayList<member> membr,membr2;
ListView list1 ;
ListView list2 ;
Button group1;
Button group2;
GroupAdapter groupadapter;
public FragmentGroups(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.group_fragment, container, false);
group1 = (Button) rootView.findViewById(R.id.Gp1);
group2 = (Button) rootView.findViewById(R.id.Gp2);
list1 = (ListView) rootView.findViewById(R.id.list1);
this.db = new SendJobDataBase(getActivity());
membr=db.getMembersList();
groupadapter= new GroupAdapter(this.getActivity(),R.layout.listrow_item ,membr);
list1.setAdapter( groupadapter);
list2 = (ListView) rootView.findViewById(R.id.list2);
membr2=db.getMembersList2();
groupadapter= new GroupAdapter(this.getActivity(),R.layout.listrow_item ,membr2);
list2.setAdapter( groupadapter);
group1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
list1.setVisibility(View.VISIBLE);
list2.setVisibility(View.INVISIBLE);
}
});
group2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
list1.setVisibility(View.GONE);
list2.setVisibility(View.VISIBLE);
}
});
return rootView;
}
}
package com.sunmobile.navigationdrawer;
导入java.util.ArrayList;
导入java.util.List;
导入android.app.Fragment;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.sunmobileappnow.mobileappnow.PasswordDB;
导入com.sunmobileapnow.mobileappnow.R;
公共类FragmentGroups扩展了Fragment{
package com.sunmobile.navigationdrawer;
import java.util.ArrayList;
import java.util.List;
import android.app.Fragment;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.sunmobileappnow.mobileappnow.PasswordDB;
import com.sunmobileappnow.mobileappnow.R;
public class FragmentGroups extends Fragment {
SendJobDataBase db;
Cursor cursor;
ArrayList<member> membr,membr2;
ListView list1 ;
ListView list2 ;
Button group1;
Button group2;
GroupAdapter groupadapter;
public FragmentGroups(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.group_fragment, container, false);
group1 = (Button) rootView.findViewById(R.id.Gp1);
group2 = (Button) rootView.findViewById(R.id.Gp2);
list1 = (ListView) rootView.findViewById(R.id.list1);
this.db = new SendJobDataBase(getActivity());
membr=db.getMembersList();
groupadapter= new GroupAdapter(this.getActivity(),R.layout.listrow_item ,membr);
list1.setAdapter( groupadapter);
list2 = (ListView) rootView.findViewById(R.id.list2);
membr2=db.getMembersList2();
groupadapter= new GroupAdapter(this.getActivity(),R.layout.listrow_item ,membr2);
list2.setAdapter( groupadapter);
group1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
list1.setVisibility(View.VISIBLE);
list2.setVisibility(View.INVISIBLE);
}
});
group2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
list1.setVisibility(View.GONE);
list2.setVisibility(View.VISIBLE);
}
});
return rootView;
}
}
FragmentGroups.this.getActivity()
FragmentGroups.getActivity()
public void Set_Referash_Data() {
data.clear();
db = new SendJobDataBase(FragmentGroups.this.getActivity());
ArrayList<member> contact_array_from_db = db.Get_Contacts();
for (int i = 0; i < contact_array_from_db.size(); i++) {
int tidno = contact_array_from_db.get(i).getID();
String name = contact_array_from_db.get(i).getName();
data.add(cnt);
}
db.close();
gdb = new GroupAdapter(FragmentGroups.this.getActivity(), R.layout.listrow_item, data);
l1.setAdapter(gdb);
gdb.notifyDataSetChanged();
}