我是Java和Android编程的新手。对于Android项目,我需要在String中转换两个字符的数组,然后将结果添加到ListView中。
这两个字符来自一个for循环,代表一对从“AA”到“ZZ”的字符。我使用for循环生成一个字母的ASCII码。
btn_MANAGER_SlaveRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
char[] AdrBuffer = null;
final String txt_Adr = "ZZ";
for (byte MSB_Adr = 65; MSB_Adr <= 90; MSB_Adr++) {
for (byte LSB_Adr = 65; LSB_Adr <= 90; LSB_Adr++) {
AdrBuffer[0] = (char)MSB_Adr;
AdrBuffer[1] = (char)LSB_Adr;
txt_Adr.copyValueOf(AdrBuffer);
runOnUiThread(new Runnable() {
public void run() {
adapter_lst_MANAGER_SlaveActive.add(txt_Adr);
}
});
}
}
}
}).start();
}
});
当我点击按钮时,应用程序会停止并关闭。
你能帮我弄清楚出了什么问题吗?
答案 0 :(得分:1)
使用StringBuilder
StringBuilder builder = new StringBuilder();
builder.append((char)MSB_Adr);
builder.append((char)LSB_Adr);
String txt_Adr = builder.toString();
希望这会有所帮助
答案 1 :(得分:0)
我对您的代码做了一些更改,最终,它工作了!你在一个单独的线程中包含了while循环,这很好但是.copyValueOf()方法可能会导致一些问题。我在下面提供了您的代码的精炼版本。
public class MainActivity extends Activity implements Runnable {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
final ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this, R.layout.list, R.id.name);
int j=65;
for(int i=0;i<=25;i++) {
char one=(char) j;
adapter.add(""+one+one);
j++;
}
lv.setAdapter(adapter);
}
}
如果有效,请告知我们,如果您对代码有任何疑问,请与我们联系。干杯!