Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Zapp
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 47
#1

Какой адаптер посоветуете мне использовать? - Android

23.04.2013, 06:15. Просмотров 552. Ответов 2
Метки нет (Все метки)

MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.util.ArrayList;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
 
import android.widget.ListView;
 
public class MainActivity extends ListActivity {
    
    private ArrayList<PostItem> messages;
    private PostAdapter adapter;
    
    
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            messages = savedInstanceState.getParcelableArrayList("messages");
            adapter = new PostAdapter(MainActivity.this, R.layout.post_entry,messages);
            setListAdapter(adapter);
            
        } else
            new GetParserResult().execute();
    }
    
    @Override//открывает список
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent postActivity = new Intent(this, PostActivity.class);
        Bundle store = new Bundle();
        store.putString("title", messages.get(position).title);
        store.putString("description", messages.get(position).description);
        store.putString("date", messages.get(position).date);
        store.putString("link", messages.get(position).link);
        postActivity.putExtras(store);
        startActivity(postActivity);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putParcelableArrayList("messages", messages);
    }
    private class GetParserResult extends
    AsyncTask<Context, Integer, ArrayList<PostItem>> {
    private ProgressDialog loadingDialog;
    private NewParser parser;
 
    protected void onPreExecute() {
    parser = new NewParser();
    loadingDialog = ProgressDialog.show(MainActivity.this, "","Загрузка...\nЖдите...", true);
    }
 
    @Override
    protected ArrayList<PostItem> doInBackground(Context... arg1) {
    return parser.parse();
    }
 
    protected void onPostExecute(ArrayList<PostItem> result) {
    if (result == null) {
        AlertDialog.Builder builder = new AlertDialog.Builder(
                MainActivity.this);
        builder.setMessage("Ошибка загрузки")
                .setCancelable(false)
                .setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                                loadingDialog.dismiss();
                            }
                        });
        AlertDialog alert = builder.create();
        alert.show();
    } else {
        messages = result;
        loadingDialog.dismiss();
        adapter = new PostAdapter(MainActivity.this,
                R.layout.post_entry, messages);
        setListAdapter(adapter);
    }
}
}
}
NewParser
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
 
import android.sax.Element;
import android.sax.EndElementListener;
import android.sax.EndTextElementListener;
import android.sax.RootElement;
import android.util.Xml;
 
public class NewParser {
 
    protected InputStream getInputStream() {
        
            URL feedUrl = null;
            
            try {
                
                feedUrl = new URL("http://anddev.ru/feed");
            } catch (MalformedURLException e1) {
                feedUrl = null;
            }
            try {
                return feedUrl.openConnection().getInputStream();
            } catch (IOException e) {
                return null;
            }
        }
 
        public ArrayList<PostItem> parse() {//парсинг
            final PostItem currentPost = new PostItem();
            final ArrayList<PostItem> messages = new ArrayList<PostItem>();
        RootElement root = new RootElement("rss");
            Element channel = root.getChild("channel");
            Element item = channel.getChild("item");
            
            item.setEndElementListener(new EndElementListener() {
                public void end() {
                    messages.add(currentPost.copy());
                }
            });
            
            item.getChild("title").setEndTextElementListener(
                    new EndTextElementListener() {
                        public void end(String body) {
                            currentPost.title = body;
                        }
                    });
            item.getChild("link").setEndTextElementListener( //
                    new EndTextElementListener() {
                        public void end(String body) {
                            currentPost.link = body;
                        }
                    });
            item.getChild("description").setEndTextElementListener( //содержания файла
                    new EndTextElementListener() {
                        public void end(String body) {
                            currentPost.description = body;
                        }
                    });
            item.getChild("pubDate").setEndTextElementListener(
                    new EndTextElementListener() {
                    public void end(String body) {
                            currentPost.setDate(body);
                        }
                    });
            
            try {
                              //взял с инпут      // указ кодировки               
                Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8,root.getContentHandler()); //проверка юникода
            } 
            catch (Exception e) 
            
            {
                return null;
            }
            return messages;
        }
}
PostActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.text.util.Linkify;
import android.widget.TextView;
 
public class PostActivity extends Activity {//показывает открытый список
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.post);
        TextView title = (TextView) findViewById(R.id.title);
        TextView description = (TextView) findViewById(R.id.description);
        TextView link = (TextView) findViewById(R.id.link);
        TextView date = (TextView) findViewById(R.id.date);
        Bundle store = getIntent().getExtras();
        title.setText(store.getString("title"));
        description.setText(Html.fromHtml(store.getString("description")));
        link.setText(store.getString("link"));
        Linkify.addLinks(link, Linkify.WEB_URLS);
        date.setText(store.getString("date"));
    }
}
PostAdapter
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
 
public class PostAdapter extends ArrayAdapter<PostItem> {
 
    public ArrayList<PostItem> messages;
    public LayoutInflater inflater;
 
    public PostAdapter(Activity context, int resource,
            ArrayList<PostItem> objects) {
        super(context, resource, objects);
        messages = objects;
        inflater = LayoutInflater.from(context);
    }
 
    static class ViewHolder {
        public TextView titleView;
        public TextView pubDateView;
    }
 
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.post_entry, null, true);
            holder = new ViewHolder();
            holder.titleView = (TextView) convertView.findViewById(R.id.post_title);
            holder.pubDateView = (TextView) convertView.findViewById(R.id.post_pubDate);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.titleView.setText(messages.get(position).title);
        holder.pubDateView.setText(messages.get(position).date);
        return convertView;
    }
 
}
PostItem

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
 
import android.os.Parcel;
import android.os.Parcelable;
 
public class PostItem implements Parcelable {
    static SimpleDateFormat FORMATTER = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.US);
    static SimpleDateFormat OUT_FORMATTER = new SimpleDateFormat("dd MMM yyyy HH:mm");
    public String title;
    public String link;
    public String description;
    public String date;
 
    public PostItem() {
        title = "";
        link = "";
        description = "";
        date = "";
    }
 
    public void setDate(String date) { //показывает даты
        try {
            this.date = (String) OUT_FORMATTER.format(FORMATTER.parse(date.trim()));
        } catch (ParseException e) {
            this.date = null;
        }
    }
 
    public PostItem copy() {
        PostItem copy = new PostItem();
        copy.title = title;
        copy.link = link;
        copy.description = description;
        copy.date = date;
        return copy;
    }
 
    @Override
    public int describeContents() {
        return 0;
    }
 
    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(title);
        out.writeString(link);
        out.writeString(description);
        out.writeString(date);
    }
 
    public static final Parcelable.Creator<PostItem> CREATOR = new Parcelable.Creator<PostItem>() {//заполняет новостями
 
        public PostItem createFromParcel(Parcel source) {
            return new PostItem(source);
        }
 
        public PostItem[] newArray(int size) {
            return new PostItem[size];
        }
    };
 
    private PostItem(Parcel source) {
        title = source.readString();
        date = source.readString();
        link = source.readString();
        description = source.readString();
    }
}
main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
 
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher" />
 
        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|top"
            android:background="@null"
            android:src="@drawable/ic_launcher" />
 
        <ImageButton
            android:id="@+id/imageButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|top"
            android:background="@null"
            android:src="@drawable/ic_launcher" />
 
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />
 
    </FrameLayout>
 
    <HorizontalScrollView
        android:id="@+id/horizontalScrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.04" >
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="horizontal" >
 
            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="318dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher" />
 
            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="318dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher" />
 
        </LinearLayout>
    </HorizontalScrollView>
 
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="308dp"
        android:layout_weight="0.05" >
 
    </ListView>
 
</LinearLayout>
post_entry.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
      <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp" 
            android:id="@+id/post_title"/>
     
      <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:paddingLeft="5dp"
            android:paddingBottom="5dp"
            android:id="@+id/post_pubDate"
      />
</LinearLayout>
Добавлено через 5 минут
post
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:layout_height="wrap_content"  
        android:gravity="center"
        android:textStyle="bold"
        android:id="@+id/title"  
        android:layout_alignParentTop="true"  
        android:layout_width="fill_parent"  
        android:padding="10dp">
    </TextView>
    <TextView 
        android:layout_below="@id/title"
        android:id="@+id/description" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:padding="10dp">
    </TextView>
    <TextView 
        android:layout_below="@id/description"
        android:id="@+id/link" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:padding="5dp">
    </TextView>
    <TextView 
        android:layout_height="wrap_content"  
        android:gravity="left"  
        android:id="@+id/date"  
        android:layout_alignParentBottom="true"  
        android:layout_width="fill_parent"  
        android:padding="5dp">
    </TextView>
</RelativeLayout>
Добавлено через 3 минуты

AndroidManifest.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.INTERNET"/>
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="PostActivity"></activity>
    </application>
 
</manifest>
Добавлено через 4 минуты
ListView только показывает хотелось бы реализовать чтобы в ListView была изображения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 06:15     Какой адаптер посоветуете мне использовать?
Посмотрите здесь:

Что посоветуете почитать по программированию под Android? Android
Android Hashmap вывод в адаптер
Android Адаптер для GridView
Android Передать адаптер в Intent
Android Какой использовать элемент экрана для вывода текста?
Адаптер Android
Не могу понять, какой элемент использовать Android
Адаптер и ListView Android
Android Какой элемент интерфейса использовать?
Какой адаптер нужен для кастомного ExpandableListView Android
Android Какой бесплатный модуль чата для Android и iOS использовать?
Кастомный адаптер listView Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 647
23.04.2013, 15:39     Какой адаптер посоветуете мне использовать? #2
http://startandroid.ru/ru/uroki/vse-...adapterov.html может это поможет.
c4sp3r
0x5B4C322291BD52AE
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
23.04.2013, 16:46     Какой адаптер посоветуете мне использовать? #3
Цитата Сообщение от Zapp Посмотреть сообщение
ListView только показывает хотелось бы реализовать чтобы в ListView была изображения
https://github.com/nostra13/Android-...l-Image-Loader
Yandex
Объявления
23.04.2013, 16:46     Какой адаптер посоветуете мне использовать?
Ответ Создать тему
Опции темы

Текущее время: 04:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru