У меня неприятная проблема, которая может быть легкой. Массивы в Java кажутся разочаровывающими, а не интуитивными.
У меня есть массив строк с названием title, он имеет несколько заголовков
вот часть массива
private String[] title = {
"Abundance",
"Anxiety",
"Bruxism",
"Discipline",
"Drug Addiction"
}
Эта часть кажется нормальной, так как код компилируется и работает очень хорошо Теперь я хочу создать еще один массив на основе этого массива. новые массивы будут сделаны статическим текстом, объединенным с данными из этого массива, а затем более статическим текстом.
Я определяю две статические строки
String urlbase = "http://www.somewhere.com/data/";
String imgSel = "/logo.png";
поэтому я добавил объявление для нового массива
String[] mStrings;
и затем я создаю базовый цикл for для итерации и создания элементов нового массива
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
цикл принимает значение массива и удаляет не альфа-символы и делает его строчными таким образом,
Наркомания
становится
drugaddiction
Я хочу закончить с чем-то вроде этого
mStrings[0]="http://www.somewhere.com/data/abundance/logo.png"
mStrings[1]="http://www.somewhere.com/data/anxiety/logo.png"
mStrings[2]="http://www.somewhere.com/data/bruxism/logo.png"
mStrings[3]="http://www.somewhere.com/data/discipline/logo.png"
mStrings[4]="http://www.somewhere.com/data/drugaddiction/logo.png"
Я пробовал несколько разных попыток объявить mStrings, но все они были неверны когда я опускаю это, Eclipse предлагает это
String[] mStrings;
Теперь кажется, что это должно быть довольно легко и правильно, но когда я ввожу что-нибудь после этого Я получаю сообщение об ошибке
Syntax error on token ";", { expected after this token
Поскольку это один к одному с другим массивом, я попытался сделать это в объявлении, но это также не помогло
String[] mStrings[title.length];
просто чтобы дать ему количество
Я думаю, что ошибка есть в декларации, но я не могу найти документы, в которых она четко изложена.
Похоже, что он ожидает не только объявления, но и загрузки массива, чего я не хочу, но я также пытался загрузить его с тремя элементами, но он все еще не работал правильно
Как я уже сказал, я хочу загрузить его в цикл for
Любая помощь будет оценена.
Я попытался установить размер массива, но получил ту же ошибку
вот точный код
может быть, это в другом месте
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity {
ListView list;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, mStrings);
list.setAdapter(adapter);
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(listener);
}
@Override
public void onDestroy()
{
list.setAdapter(null);
super.onDestroy();
}
public OnClickListener listener=new OnClickListener(){
public void onClick(View arg0) {
adapter.imageLoader.clearCache();
adapter.notifyDataSetChanged();
}
};
private String[] title = {
"Abundance",
"Anxiety",
"Bruxism",
"Discipline",
"Drug Addiction"
}
String urlbase = "http://imobilize.s3.amazonaws.com/giovannilordi/data/";
String imgSel = "/logo.png";
String[] mStrings = new String[title.length];
ОШИБКА показывает ЗДЕСЬ
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
(источник: imobilizeit.com)