未调用接口 android
Interface is not being called android
我使用了一个接口来确定异步任务是否完成或者not.But当我使用该接口时,该接口的两个方法没有被调用。
自定义适配器Class
public class MyResourceCustomAdaper extends BaseAdapter {
static GetMatchingJobsArray getMatchingJobsArray;
public MyResourceCustomAdaper(Context context, ArrayList<HashMap<String, String>> data) {
this.context = context;
this.data = data;
}
public static void setInterface(GetMatchingJobsArray getMatchingJobsArray) {
MyResourceCustomAdaper.getMatchingJobsArray = getMatchingJobsArray;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
doing stuffs here
return view;
}
}
public static class GetMatchingJobsAsync extends AsyncTask<String, String, String> {
String response;
Context c;
public GetMatchingJobsAsync(Context c) {
this.c = c;
}
@Override
protected String doInBackground(String... strings) {
calling web method here
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
arrayMatchingJobs = new ArrayList<HashMap<String, String>>();
getMatchingJobsArray.getMatchingJobs(true, arrayMatchingJobs);// here i am passing my array to the interface
getMatchingJobsArray.hasCompleted(true);
Intent i = new Intent(c, MyResourceMatchingJobs.class);
c.startActivity(i);
}
}
}
public interface GetMatchingJobsArray {
public void getMatchingJobs(boolean value, ArrayList<HashMap<String, String>> arrayMatchingJobs);
public void hasCompleted(boolean value);
}
}
Class 我在哪里实现接口
public class MyResourceMatchingJobs extends Activity implements MyResourceCustomAdaper.GetMatchingJobsArray {
private ListView listView;
private MyResourceMatchingJobsCustomList adapter;
private static ProgressDialog pDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_resource_matching_jobs_list);
listView = (ListView) findViewById(R.id.lv_my_resource_matching_jobs);
MyResourceCustomAdaper.setInterface(this);//use for initailizing the interface
}
@Override
public void getMatchingJobs(boolean value, ArrayList<HashMap<String, String>> arrayMatchingJobs) {
adapter = new MyResourceMatchingJobsCustomList(MyResourceMatchingJobs.this, arrayMatchingJobs);
listView.setAdapter(adapter);
}
@Override
public void hasCompleted(boolean value) {
Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
}
这里activity为什么我的界面没有被调用???
Here in this activity why my interface is not being called???
因为在 MyResourceMatchingJobs
Activity 不是 运行 时调用 getMatchingJobs
。
所以尝试在从onPostExecute
Activity开始后调用这两个方法。
建议:因为发送 arrayMatchingJobs
和一个布尔值所以使用 i.putExtra(KEY,VALUE)
在 MyResourceMatchingJobs
Activity
中获取两个值
我使用了一个接口来确定异步任务是否完成或者not.But当我使用该接口时,该接口的两个方法没有被调用。
自定义适配器Class
public class MyResourceCustomAdaper extends BaseAdapter {
static GetMatchingJobsArray getMatchingJobsArray;
public MyResourceCustomAdaper(Context context, ArrayList<HashMap<String, String>> data) {
this.context = context;
this.data = data;
}
public static void setInterface(GetMatchingJobsArray getMatchingJobsArray) {
MyResourceCustomAdaper.getMatchingJobsArray = getMatchingJobsArray;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return data.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
doing stuffs here
return view;
}
}
public static class GetMatchingJobsAsync extends AsyncTask<String, String, String> {
String response;
Context c;
public GetMatchingJobsAsync(Context c) {
this.c = c;
}
@Override
protected String doInBackground(String... strings) {
calling web method here
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
arrayMatchingJobs = new ArrayList<HashMap<String, String>>();
getMatchingJobsArray.getMatchingJobs(true, arrayMatchingJobs);// here i am passing my array to the interface
getMatchingJobsArray.hasCompleted(true);
Intent i = new Intent(c, MyResourceMatchingJobs.class);
c.startActivity(i);
}
}
}
public interface GetMatchingJobsArray {
public void getMatchingJobs(boolean value, ArrayList<HashMap<String, String>> arrayMatchingJobs);
public void hasCompleted(boolean value);
}
}
Class 我在哪里实现接口
public class MyResourceMatchingJobs extends Activity implements MyResourceCustomAdaper.GetMatchingJobsArray {
private ListView listView;
private MyResourceMatchingJobsCustomList adapter;
private static ProgressDialog pDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_resource_matching_jobs_list);
listView = (ListView) findViewById(R.id.lv_my_resource_matching_jobs);
MyResourceCustomAdaper.setInterface(this);//use for initailizing the interface
}
@Override
public void getMatchingJobs(boolean value, ArrayList<HashMap<String, String>> arrayMatchingJobs) {
adapter = new MyResourceMatchingJobsCustomList(MyResourceMatchingJobs.this, arrayMatchingJobs);
listView.setAdapter(adapter);
}
@Override
public void hasCompleted(boolean value) {
Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
}
这里activity为什么我的界面没有被调用???
Here in this activity why my interface is not being called???
因为在 MyResourceMatchingJobs
Activity 不是 运行 时调用 getMatchingJobs
。
所以尝试在从onPostExecute
Activity开始后调用这两个方法。
建议:因为发送 arrayMatchingJobs
和一个布尔值所以使用 i.putExtra(KEY,VALUE)
在 MyResourceMatchingJobs
Activity