我一直试图通过将包含我目录名称的log.i字符串值添加到数组中,然后使用数组适配器通过listView打印它们,来在listView中的目录中打印项目.但是,当我尝试运行该应用程序时,它将打印包含目录名称的日志,但不会在listView上打印任何内容.有什么帮助吗?
这是我的代码:
import android.os.AsyncTask;
import android.os.Bundle;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.Properties;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import android.app.Activity;
import android.util.Log;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
private String user = "root"; //username
private String pass = "password"; //password
private String host = "hostname"; //hostname
private int portNum = 22; //replace port number
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new AsyncTask() {
@Override
protected Void doInBackground(Integer... params) {
try {
executeRemoteCommand(user, pass, host, portNum);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
}
public String executeRemoteCommand(String username, String password, String hostname, int port)
throws Exception {
//declare list and array
final ListView list = (ListView)findViewById(R.id.choose_sound_listView);
ArrayList soundNames = new ArrayList();
JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, port);
session.setPassword(password);
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
Channel channel = session.openChannel("shell");
channel.connect();
DataInputStream dataIn = new DataInputStream(channel.getInputStream());
DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream());
// send ls command to the server
dataOut.writeBytes("ls
");
dataOut.flush();
// and print the response
String line = dataIn.readLine();
String out = line + "
";
// loop to add log string values to array
for (int i = 0; i < 10; i++) {
line = dataIn.readLine();
out += line + "
";
Log.i("SSH", ": " + line);
//add to array
soundNames.add(line);
}
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1, android.R.id.text1
, soundNames);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1,
int position, long arg3) {
// Show Alert
Toast.makeText(getApplicationContext(),
"Alert", Toast.LENGTH_LONG)
.show();
}
});
dataIn.close();
dataOut.close();
channel.disconnect();
session.disconnect();
return out;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}