2010-10-28 2 views
0

Я застрял в синтаксическом разборе текста в android. Я должен прочитать текстовый файл из url и отобразить содержимое в списке. Содержимое текстового файла включает изображения и тексты, разделенные метками (например, ^, ~, |, ~^~^~). Как я могу удалить разделители и отобразить в виде списка с помощью класса адаптера массива? Может ли кто-нибудь помочь с кодом?Анализ текста в android

ответ

0

Я думаю, что адаптер массива может быть двумя упрощенными для этого. Я имею в виду, что вы могли бы использовать его, но в итоге он будет более сложным, чем общая проблема. Поэтому я думаю, что вы можете понять, как анализировать текстовый файл, скажем, объекты Text и Image (для определения). Тогда вам нужен адаптер. Есть несколько мест с некоторыми фрагментами кода. Я думаю, что SimpleAdapter может хорошо работать для этого сценария.

По упрощенным причинам, скажем, у вас есть макет для списка строки с обоими в ImageView и TextView

layout.xml

<LinearLayout xmlns:android="..." 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
> 
    <ImageView 
     android:id="@+id/image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 
</LinearLayout> 

и теперь мы должны использовать адаптер для заполнения что

Таким образом, конструктор является мясом класса для клиентов.

SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 

Так что, если идти с предположением о том, что файл теперь анализируется и у нас есть список объектов

final Context context = ...; 
final ListView listView = ...; 
List<Object> objects = ...; 
List<Map<String, Object>> mappings = new ArrayList<Map<String, Object>>(objects.size()); 
for(Object o : objects) { 
HashMap<String, Object> data = new HashMap<String,Object>(); 
mappings.add(data); 
if (o instanceof Image) { 
    data.put("image", ((Image)o).getBitmap()); 
    data.put("text", ""); 
} else { 
    data.put("image", null); 
    data.put("text", String.valueOf(o)); 
} 
} 
SimpleAdapter adapter = new SimpleAdapter(context, mappings, R.layout.layout, new String[] { "image", "text"}, new int[] {R.id.image, R.id.text}); 
adapter.setViewBinder(new SimpleAdapter.ViewBinder() { 
    public boolean setViewValue (View view, Object data, String textRepresentation) { 
    if (data instanceof Bitmap && view instanceof ImageView) { 
     // This is the main reason for the ViewBinder 
     ImageView imageView = (ImageView) view; 
     imageView.setImageBitmap((Bitmap)data); 
     return true; 
     } else if (view instanceof TextView) { 
     TextView textView = (TextView)view; 
     textView.setText(textRepresenation); 
     return true; 
     } 
     return false; 
    } 
    }); 
listView.setAdapter(adapter); 

Теперь, если вам нужна помощь в разборе из файла, а вам нужно обеспечить лучшее потому что текстовый файл с разделителем не кажется, что достаточно отметить два разных типа данных.

Но если это так, и у вас есть память, просто загрузите его как строку и разделите (разделитель). Затем для каждого элемента, если вы решите, что это String cool, сохраните его как строку и поместите в список. Если вы решите, что это изображение, декодируйте растровое изображение и поместите его в список. подключите этот список в список объектов в приведенном выше коде, и я думаю, что все установлено.

+0

Мой текстовый файл содержит изображения, которые находятся в виде кода (например 6468), а затем разделители затем текст, делиметр, текс, т и т. д. Например: abcd^2531 ~ abcdCity^2215 ~ abcd ~^~^~ 14: 00 HRS ~ abcd ~~ 2010101610531 ~ abcd ~ abcd ~ 6 ~ N ~ 20101016 ~ | abcd^6574 ~ abcd^7158 ~ abcd ~^~^~ 14: 00 HRS ~ Старый abcd ~~ 2010101610854 ~ abcd ~ abcd ~ 6 ~ N ~ 20101016 ~ | Как разбить разделители и сохранить их в строке? .... Я пробовал много способов успешно. – snn

+0

Прошу прощения, я не понимаю формат, который вы объясняете. Где изображение здесь? –

0

четыре цифры номера, которые есть образы ...... то есть 2531, 2215, 6574, 7158.

+0

Plz забудьте об изображениях i thnk, я буду держать изображения статичными ....... Просто позвольте мне knw как я могу разбить все эти делиметры ....... – snn

Смежные вопросы