주 Ui에서 목록보기를 사용하여 세부 사항을 검색하기 위해 Mikrotik 장치에 연결하는 Asynctask를 통해 업데이트하고 싶습니다.MainActivity에서 Asynctask에서 ListView 업데이트하기
ListAdapter 생성자의 활동 (mActivity)에 대해 "Class name expected here"오류가 계속 발생하지만 별도의 클래스 파일에서 UI를 업데이트 할 수 있도록 활동을 전달 중입니다. 여기
new MikrotikReader(user_name, password, ipaddress,"/ip/firewall/filter/print where comment=Test", this).execute();
가있는 목록보기이다 : 나는 MainActivity 클래스 파일에서 AsyncTask를 호출하는 방법을
public class MikrotikReader extends AsyncTask<String, Void, ArrayList<String>> {
//Default connection details for mikrotik
private int mkPort = 8728;
private int mkTimeout = 5000;
private String userName;
private String userPass;
private String mkIpAddress;
private String mkCommand;
private ListView listView;
private Activity mActivity;
public MikrotikReader(String user, String pass, String ipaddress, String command, Activity activity) {
this.userName = user;
this.userPass = pass;
this.mkIpAddress = ipaddress;
this.mkCommand = command;
this.mActivity = activity;
}
@Override
protected ArrayList<String> doInBackground(String... params) {
ArrayList<String> mylist = new ArrayList<String>();
try {
ApiConnection con = ApiConnection.connect(SocketFactory.getDefault(), mkIpAddress, mkPort, mkTimeout);
con.login(userName, userPass); // log in to router
if (con.isConnected()) {
List<Map<String, String>> rs1 = con.execute(mkCommand);
for (Map<String, String> results1 : rs1) {
getResults[0] = new String(results1.get("comment"));
mylist.add(getResults[0]);
}
con.close();
}
} catch (MikrotikApiException e) {
} catch (Throwable e) {
e.printStackTrace();
}
return mylist;
}
@Override
protected void onPostExecute(ArrayList<String> mylist) {
System.out.println("This is the array content " + mylist.get(0));
listView = (ListView) mActivity.this.findViewById(R.id.listView);
listView.setAdapter(new ArrayAdapter<String>(mActivity.this,android.R.layout.simple_list_item_1,new ArrayList<String>())); }
이 "이"활동으로 전달입니다 : 여기
은 AsyncTask를 코드입니다 mainactivity.xml 파일 :<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_bg" />
다른 활동에서 목록보기를 업데이트하는 방법이 올바르지 않습니다.이 asyn 작업을 다른 클래스에 넣으십시오. 인터페이스를 사용하거나 간단하게 같은 것을 넣을 수 있습니다. 그렇다면 당신은 활동을 통과 할 필요가 없습니다. –
나는 최상의 실천이 별도의 재사용 가능한 클래스 파일을 가지고, 객체 지향 코드를 유지하고, 그들 사이에 데이터를 전달하는 것이라고 들었다. Mikrotik 장치에 데이터를 가져 오거나 쓰는 비동기 작업을 처리하는 다른 클래스 파일이 있으므로 동일한 클래스 파일을 모두 구현하도록 제안 하시겠습니까? 이렇게하면 chunky main_activity 파일이 생성됩니다. 그게 좋을가? – EtienneSW