【问题标题】:Interface not working接口不工作
【发布时间】:2014-08-29 05:23:41
【问题描述】:

我使用一个接口将 ArrayList 从一个类获取到另一个类。但是当我在其他类中调用接口时,我没有得到 ArrayList 的值。

界面

public interface GetArrayList {
    public void getArray(List<SearchModel> listValues);
}

我设置数组列表的类

getArrayList = new GetArrayList() {
    @Override
    public void getArray(List<SearchModel> listValues) {
        listValues = values;
    }
};

JSONArray tableArray = NewDataSet.getJSONArray("Table");
for (int i = 0; i < tableArray.length(); i++) {
    JSONObject table = tableArray.getJSONObject(i);
    data = new SearchModel(/*Constructor irrelevant to question*/);
    values.add(data);
}
getArrayList.getArray(values);

我想使用数组列表的第二类

public class SearchJobList extends ListFragment {
    private View view;
    private List<SearchModel> data;
    private GetArrayList getArrayList;
    SearchJobAdapter jobAdapter;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.search_job_list, null, false);
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        data = new ArrayList<SearchModel>();
        getArrayList = new GetArrayList() {
            @Override
            public void getArray(List<SearchModel> listValues) {
                data = listValues;
                jobAdapter = new SearchJobAdapter(getActivity(), data);
                setListAdapter(jobAdapter);
            }
        };
    }
}

【问题讨论】:

  • 你为什么不直接使用public ArrayList&lt;SearchModel&gt; getArrayList()
  • 很抱歉让你失望了???
  • 您是否将Activity类中GetArrayList的引用对象发送给您正在操作的一个类..?
  • 我想为列表设置适配器。所以我将使用 ArrayList,所以我已经使用了一个接口

标签: java android interface


【解决方案1】:

尝试从 mainActivity 设置一个静态 List 变量 并尝试从 OtherActivity 访问它...

【讨论】:

  • 我知道,但是使用静态是很好的编程方式,所以我尝试使用接口
【解决方案2】:

使用“应用程序”类。这有点多,但存储全局对象/数据的正确位置。

每个活动都可以通过调用 .getApplication() 来访问它,只需将其转换为您继承的类。

在 AndroidManifest 中,通过属性“android:name”扩展“application”标签,该属性指定您自己的应用程序类(扩展应用程序)。

<application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
             android:name="com.example.my.great.package.MyApplication"
....

班级:

class MyApplication extends android.app.Application {
....

在活动中使用:

((MyApplication)getApplication()).getMyList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    相关资源
    最近更新 更多