ArrayAdapterにアイテムを追加してそれを反映させるためにはnotifyDataSetChanged()を呼んであげるといいらしいんだけど、
確かにアイテムは追加されるんだけど、反映させるのにスクロールしたり、メニューだしたり、つまり放置しておいて、どんどんListが流れていくという理想の動きにならずに悪戦苦闘中。
(Logではちゃんと即時にツイートが流れてきている様子)
一応自己解決・・・だけどこれが正しいのかわからない。
今度自分流の対処を書いておきますはい。
一体どうしたらあの流れるようなストリーミングを実現できるんだ・・・・
誰かから助言をもらえることを信じてMainActivityここに丸投げしておきます
(見難いソースなのは正直ごめん)
package com.example.zimitta;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import twitter4j.MediaEntity;
import twitter4j.Paging;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.URLEntity;
import twitter4j.UserStreamAdapter;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.Activity;
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.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.graphics.drawable.PaintDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.image.SmartImageView;
public class MainActivity extends ListActivity{
private TweetAdapter mAdapter;
private Twitter mTwitter;
private long OldStatus = 0;
private long NewStatus = 0;
private int Scount = 0;
private int listposition = 0;
private int listposition_y = 0;
private SharedPreferences sp,sp_ID;
private Boolean NewReloadFulg = true;
public static long Userid; //変数の共有化
public static List
private ProgressDialog progressDialog;
private MyUserStreamAdapter mMyUserStreamAdapter;
private TwitterStream twitterStream;
//定数
public static final String EX_STACK_TRACE = "exStackTrace";
public static final String PREF_NAME_SAMPLE = "prefNameSample";
public static final String cache = "tweetcache.txt";
public static final String cache_mention = "mention_cache.txt";
private static final String TOKEN = "token";
private static final String TOKEN_SECRET = "token_secret";
private static final String PREF_NAME = "twitter_access_token";
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("タイムライン");
// UncaughtExceptionHandlerを実装したクラスをセットする。
CustomUncaughtExceptionHandler customUncaughtExceptionHandler = new CustomUncaughtExceptionHandler(
getApplicationContext());
Thread.setDefaultUncaughtExceptionHandler(customUncaughtExceptionHandler);
// SharedPreferencesに保存してある例外発生時のスタックトレースを取得します。
SharedPreferences preferences = getApplicationContext()
.getSharedPreferences(PREF_NAME_SAMPLE, Context.MODE_PRIVATE);
String exStackTrace = preferences.getString(EX_STACK_TRACE, null);
if (!TextUtils.isEmpty(exStackTrace)) {
// スタックトレースが存在する場合は、
// エラー情報を送信するかしないかのダイアログを表示します。
new ErrorDialogFragment(exStackTrace).show(
getFragmentManager(), "error_dialog");
// スタックトレースを消去します。
preferences.edit().remove(EX_STACK_TRACE).commit();
}
if(Build.VERSION.SDK_INT >= 11){
final ActionBar mActionBar = getActionBar();
mActionBar.setDisplayShowHomeEnabled(false);
}
deleteFile(cache_mention);
sp = PreferenceManager.getDefaultSharedPreferences(this);
sp_ID = getSharedPreferences("UserID", 0);
SharedPreferences spOuth = getSharedPreferences(PREF_NAME,
Context.MODE_PRIVATE);
if (!TwitterUtils.hasAccessToken(this)) {
Intent intent = new Intent(this, TwitterOAuthActivity.class);
startActivity(intent);
finish();
}else {
mAdapter = new TweetAdapter(this);
setListAdapter(mAdapter);
mMyUserStreamAdapter = new MyUserStreamAdapter();
// Twitter4Jに対してOAuth情報を設定
ConfigurationBuilder builder = new ConfigurationBuilder();
{
// アプリ固有の情報
builder.setOAuthConsumerKey(getString(R.string.twitter_consumer_key));
builder.setOAuthConsumerSecret(getString(R.string.twitter_consumer_secret));
// アプリ+ユーザー固有の情報
builder.setOAuthAccessToken(spOuth.getString(TOKEN, null));
builder.setOAuthAccessTokenSecret(spOuth.getString(TOKEN_SECRET, null));
}
// 1. TwitterStreamFactory をインスタンス化する
Configuration conf = builder.build();
TwitterStreamFactory twitterStreamFactory = new TwitterStreamFactory(conf);
// 2. TwitterStream をインスタンス化する
twitterStream = twitterStreamFactory.getInstance();
ListView lv = getListView();
final boolean LongTap = sp.getBoolean("Tap_Setting", true);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//通常押し
@Override
public void onItemClick(AdapterView parent, View view,int position, long id) {
if(LongTap == false){
List_Menu(position);
}
}
});
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
//長押し
@Override
public boolean onItemLongClick(AdapterView parent, View view,int position, long id) {
if(LongTap == true){
List_Menu(position);
}
return true;
}
});
mTwitter = TwitterUtils.getTwitterInstance(this);
//自分のID取得
Userid = sp_ID.getLong("userid", 0);
if(Userid == 0){
Gtet_My_ID();
}
ShowprogressDialog();
reloadTimeLine();
}
}
//3. UserStream 受信時に応答する(UserStreamListener)リスナーを実装する
class MyUserStreamAdapter extends UserStreamAdapter {
// 新しいツイート(ステータス)を取得する度に呼び出される
@Override
public void onStatus(final Status status) {
// 6. UserStream 受信時、3 で実装したメソッドが呼び出されるので必要な処理をする
StatusIDs.add(0 ,status);
mAdapter.insert(status, 0);
mAdapter.notifyDataSetChanged();
Scount = StatusIDs.size() - 1;
NewStatus = StatusIDs.get(0).getId();
OldStatus = StatusIDs.get(Scount).getId();
listposition = getListView().getFirstVisiblePosition();
listposition_y = getListView().getChildAt(0).getTop();
getListView().setSelectionFromTop(listposition+1, listposition_y);
deleteFile(cache);
Log.v("Twitter4JUserStreamActivity", status.getText());
}
}
@Override
protected void onResume() {
super.onResume();
PaintDrawable paintDrawable = new PaintDrawable(Color.argb(255,0,0,0));
getWindow().setBackgroundDrawable(paintDrawable);
}
@Override
protected void onDestroy() {
super.onDestroy();
if(twitterStream != null)
{
twitterStream.shutdown();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optionsmenu, menu);
return true;
}
private void Gtet_My_ID() {
AsyncTask
@Override
protected List
try {
Paging p = new Paging();
p.count(1);
return mTwitter.getUserTimeline(p);
} catch (TwitterException e){
e.printStackTrace();
} catch(Exception e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List
progressDialog.dismiss();
if(result != null){
Editor e = sp_ID.edit();
e.putLong("userid", result.get(0).getUser().getId());
e.commit();
}
}
};
task.execute();
}
//タイムラインの非同期処理
private void reloadTimeLine() {
AsyncTask
String exception;
@Override
protected List
int i = Integer.parseInt(sp.getString("Load_Tweet", "20"));
if ((NewStatus == 0) && (NewReloadFulg)){
try {
deleteFile(cache);
Paging p = new Paging();
p.count(i);
return mTwitter.getHomeTimeline(p);
} catch (TwitterException e){
e.printStackTrace();
exception = e.getMessage();
} catch(Exception e)
{
e.printStackTrace();
exception = e.getMessage();
}
}else if((NewStatus != 0) && (NewReloadFulg)){
try {
Paging p = new Paging();
p.setSinceId(NewStatus);
p.count(200);
listposition = getListView().getFirstVisiblePosition();
listposition_y = getListView().getChildAt(0).getTop();
return mTwitter.getHomeTimeline(p);
} catch (TwitterException e) {
e.printStackTrace();
exception = e.getMessage();
}
}else if(!NewReloadFulg){
try {
Paging p = new Paging();
p.setMaxId(OldStatus);
p.count(i);
return mTwitter.getHomeTimeline(p);
} catch (TwitterException e){
e.printStackTrace();
exception = e.getMessage();
} catch(Exception e)
{
e.printStackTrace();
exception = e.getMessage();
}
}
return null;
}
@Override
protected void onPostExecute(List
if (result != null) {
int count = 0;
if(NewReloadFulg)
{
for (twitter4j.Status status : result) {
StatusIDs.add(count ,status);
mAdapter.insert(status, count);
count++;
}
if(NewStatus != 0){
getListView().setSelectionFromTop(listposition+count, listposition_y);
}
}else{
int i = 0;
for (twitter4j.Status status : result) {
if(i == 0)
{
int Scount = StatusIDs.size() - 1;
StatusIDs.remove(Scount);
mAdapter.remove(status);
}
count++;
i++;
StatusIDs.add(status);
mAdapter.add(status);
}
}
Scount = StatusIDs.size() - 1;
NewStatus = StatusIDs.get(0).getId();
OldStatus = StatusIDs.get(Scount).getId();
progressDialog.dismiss();
if(count == 0){
showToast("新着なし。");
}else{
showToast(count + "件更新完了!");
}
if(sp.getBoolean("Streem_Flug", false)){
// 4. TwitterStream に UserStreamListener を実装したインスタンスを設定する
twitterStream.addListener(mMyUserStreamAdapter);
// 5. TwitterStream#user() を呼び出し、ユーザーストリームを開始する
twitterStream.user();
}
} else {
progressDialog.dismiss();
showToast("タイムラインの取得に失敗しました。。。\n" + exception);
}
}
};
task.execute();
}
//メニューのアイテムを押したときの判別
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_refresh: //TL更新
NewReloadFulg = true;
ShowprogressDialog();
reloadTimeLine();
return true;
case R.id.menu_tweet: //ツイート画面へ
Intent intent = new Intent(this, TweetActivity.class);
startActivity(intent);
return true;
case R.id.menu_mention: //リプライのみ
Intent Imention = new Intent(this, MentionLineActivity.class);
startActivity(Imention);
return true;
case R.id.menu_setting: //設定画面
Intent Isetting = new Intent(this, SettingActivity.class);
startActivity(Isetting);
return true;
case R.id.menu_My_Prof: //プロフィール表示
Intent My_Prof_Intent = new Intent(this, My_Prof_Activiti.class);
startActivity(My_Prof_Intent);
return true;
case R.id.menu_DM: //DM表示
Intent DM = new Intent(this, DMActivity.class);
startActivity(DM);
return true;
}
return super.onOptionsItemSelected(item);
}
//RTの非同期処理
private void RTPost(final int position) {
AsyncTask
//処理をここに書く
@Override
protected Boolean doInBackground(Void... params) {
try{
mTwitter.retweetStatus(StatusIDs.get(position).getId());
return true;
} catch (TwitterException e){
e.printStackTrace();
} catch(Exception e)
{
e.printStackTrace();
}
return false;
}
//処理が終わった後の処理
@Override
protected void onPostExecute(Boolean result) {
if (result != false) {
showToast("リツイートしました。");
} else {
showToast("リツイートに失敗しました。。。");
}
}
};
task.execute();
}
//お気に入りの非同期処理
private void FaPost(final int position) {
AsyncTask
//処理をここに書く
@Override
protected Boolean doInBackground(Void... params) {
try{
mTwitter.createFavorite(StatusIDs.get(position).getId());
return true;
} catch (TwitterException e){
e.printStackTrace();
} catch(Exception e)
{
e.printStackTrace();
}
return false;
}
//処理が終わった後の処理
@Override
protected void onPostExecute(Boolean result) {
if (result != false) {
showToast("ふぁぼしました。");
} else {
showToast("ふぁぼ失敗・・・");
}
}
};
task.execute();
}
//通信中とかのダイアログをだす
private void ShowprogressDialog() {
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.setMessage("通信中・・・");
progressDialog.show();
}
//トースト表示
private void showToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
public void List_Menu(final int position){
String[] dialogItem;
if(position != Scount){
dialogItem = new String[]{"会話","返信", "リツイート", "ふぁぼ","ユーザー詳細","リンク先を開く","画像を開く"}; //メニューの項目作り
}else{
dialogItem = new String[]{"会話","返信", "リツイート", "ふぁぼ","ユーザー詳細","リンク先を開く","画像を開く","TLの続きを取得"}; //メニューの項目作り
}
AlertDialog.Builder dialogMenu = new AlertDialog.Builder(MainActivity.this);
dialogMenu.setItems(dialogItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch(which)
{
case 0:
Intent intent_Mention_Line = new Intent(MainActivity.this, MentionToMentionLineActivity.class);
intent_Mention_Line.putExtra("StutusID", StatusIDs.get(position).getId());
startActivity(intent_Mention_Line);
break;
case 1: //リプライ
Intent intent = new Intent(MainActivity.this, MentionsActivity.class);
intent.putExtra("mentionID", StatusIDs.get(position).getId());
intent.putExtra("StatusID", StatusIDs.get(position).getUser().getScreenName());
intent.putExtra("Name", StatusIDs.get(position).getUser().getName());
intent.putExtra("Tweet", StatusIDs.get(position).getText());
intent.putExtra("Image", StatusIDs.get(position).getUser().getProfileImageURL());
startActivity(intent);
break;
case 2: //リツイート
new AlertDialog.Builder(MainActivity.this)
.setTitle("RTしてよろしいですか?")
.setPositiveButton(
"はい",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// OK時の処理
RTPost(position);
}
})
.setNegativeButton(
"いいえ",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// NO時の処理
}
})
.show();
break;
case 3: //お気に入り
new AlertDialog.Builder(MainActivity.this)
.setTitle("ふぁぼしますか?")
.setPositiveButton(
"はい",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// OK時の処理
FaPost(position);
}
})
.setNegativeButton(
"いいえ",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// NO時の処理
}
})
.show();
break;
case 4: //ユーザー詳細
Intent My_Prof_Intent = new Intent(MainActivity.this, Prof_Activiti.class);
if(StatusIDs.get(position).getRetweetedStatus() == null){
My_Prof_Intent.putExtra("UserID", StatusIDs.get(position).getUser().getId());
}else{
My_Prof_Intent.putExtra("UserID", StatusIDs.get(position).getRetweetedStatus().getUser().getId());
}
startActivity(My_Prof_Intent);
break;
case 5: //URLを開く
Boolean URLFlug = false;
try{
if(StatusIDs.get(position).getRetweetedStatus() == null){
for (URLEntity UrlLink : StatusIDs.get(position).getURLEntities()) { //普通のURL
Uri uri = Uri.parse(UrlLink.getURL().toString());
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
URLFlug = true;
}
}else{
for (URLEntity UrlLink : StatusIDs.get(position).getRetweetedStatus().getURLEntities()) { //普通のURL
Uri uri = Uri.parse(UrlLink.getURL().toString());
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
URLFlug = true;
}
}
if(!URLFlug)
{
showToast("URLが見つかりません。。。");
}
}catch(Exception e)
{
e.printStackTrace();
showToast("なにかがおかしいです。。。");
}
break;
case 6: //画像を開く
Boolean ImageFlug = false;
try{
if(StatusIDs.get(position).getRetweetedStatus() == null){
for (MediaEntity UrlLink : StatusIDs.get(position).getMediaEntities()) { //画像のURL
Intent image = new Intent(MainActivity.this, ImageActivity.class);
image.putExtra("Imeges", UrlLink.getMediaURL());
startActivity(image);
ImageFlug = true;
}
}else{
for (MediaEntity UrlLink : StatusIDs.get(position).getRetweetedStatus().getMediaEntities()) { //画像のURL
Intent image = new Intent(MainActivity.this, ImageActivity.class);
image.putExtra("Imeges", UrlLink.getMediaURL());
startActivity(image);
ImageFlug = true;
}
}
if(!ImageFlug)
{
showToast("画像が見つかりません。。。");
}
}catch(Exception e)
{
e.printStackTrace();
showToast("なにかがおかしいです。。。");
}
break;
case 7: //TLの更新
NewReloadFulg = false;
ShowprogressDialog();
reloadTimeLine();
break;
}
}
}).create().show();
}
}
class TweetAdapter extends ArrayAdapter
private LayoutInflater mInflater;
public TweetAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1);
mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
}
static class ViewHolder {
SmartImageView icon;
TextView name;
TextView screenName;
TextView text;
TextView time;
TextView rt_To;
TextView rt;
TextView fav;
TextView via;
ImageView tweetStatus;
ProgressBar progressBar;
RelativeLayout relativeLayout;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Date TimeStatusNow = null;
Date TimeStatusTweet = null;
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
Long My_ID = MainActivity.Userid; //共有変数の呼び出し
TimeStatusNow = new Date();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_tweet, null);
SmartImageView Icon = (SmartImageView) convertView.findViewById(R.id.icon); //画像View
TextView Name = (TextView) convertView.findViewById(R.id.name); //名前View
TextView ScreenName = (TextView) convertView.findViewById(R.id.screen_name); //IDView
TextView Text = (TextView) convertView.findViewById(R.id.text); //ツイート本文View
TextView Time =(TextView) convertView.findViewById(R.id.time); //投稿時間View
TextView RT_To = (TextView) convertView.findViewById(R.id.RT_to); //RTした人View
TextView RT =(TextView) convertView.findViewById(R.id.RT); //RT数View
TextView Fav =(TextView) convertView.findViewById(R.id.Fav); //お気に入り数View
TextView Via =(TextView) convertView.findViewById(R.id.via); //投稿されたクライアント名Viwe
ImageView TweetStatus = (ImageView) convertView.findViewById(R.id.TweetStatus); //右の帯Viwe
ProgressBar ProgressBar = (ProgressBar) convertView.findViewById(R.id.progressBar1); //プログレスバーView
RelativeLayout RelativeLayout = (RelativeLayout) convertView.findViewById(R.id.Tweet_List);
holder = new ViewHolder();
holder.icon = Icon;
holder.name = Name;
holder.screenName = ScreenName;
holder.text = Text;
holder.time = Time;
holder.rt_To = RT_To;
holder.rt = RT;
holder.fav = Fav;
holder.via = Via;
holder.tweetStatus = TweetStatus;
holder.progressBar = ProgressBar;
holder.relativeLayout = RelativeLayout;
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
Status item = getItem(position);
holder.icon.setVisibility(View.VISIBLE);
holder.name.setVisibility(View.VISIBLE);
holder.screenName.setVisibility(View.VISIBLE);
holder.text.setVisibility(View.VISIBLE);
holder.time.setVisibility(View.VISIBLE);
holder.rt_To.setVisibility(View.VISIBLE);
holder.rt.setVisibility(View.VISIBLE);
holder.fav.setVisibility(View.VISIBLE);
holder.via.setVisibility(View.VISIBLE);
holder.tweetStatus.setVisibility(View.INVISIBLE);
if(item != null){
//RTされたツイートかどうか
if(item.getRetweetedStatus() == null){
holder.icon.setImageUrl(item.getUser().getProfileImageURL());
holder.name.setText(item.getUser().getName());
holder.screenName.setText( "@" + item.getUser().getScreenName());
holder.text.setText(item.getText());
TimeStatusTweet = item.getCreatedAt();
cal1.setTime(TimeStatusTweet);
cal2.setTime(TimeStatusNow);
long date1 = cal1.getTimeInMillis();
long date2 = cal2.getTimeInMillis();
long time = (date2-date1)/1000;
if(time <= 59)
{
holder.time.setText(time + "s前");
}
time = time / 60;
if((time <= 59) && (time >= 1))
{
holder.time.setText(time + "m前");
}
time = time / 60;
if((time <= 23) && (time >= 1))
{
holder.time.setText(time + "h前");
}
time = time / 24;
if (time != 0)
{
holder.time.setText(time + "d前");
}
holder.rt_To.setVisibility(View.GONE); //RTした人の名前を非表示
}else{
holder.icon.setImageUrl(item.getRetweetedStatus().getUser().getProfileImageURL());
holder.name.setText(item.getRetweetedStatus().getUser().getName());
holder.screenName.setText( "@" + item.getRetweetedStatus().getUser().getScreenName());
holder.text.setText(item.getRetweetedStatus().getText());
TimeStatusTweet = item.getRetweetedStatus().getCreatedAt();
cal1.setTime(TimeStatusTweet);
cal2.setTime(TimeStatusNow);
long date1 = cal1.getTimeInMillis();
long date2 = cal2.getTimeInMillis();
long time = (date2-date1)/1000;
if(time <= 59)
{
holder.time.setText(time + "s前");
}
time = time / 60;
if((time <= 59) && (time >= 1))
{
holder.time.setText(time + "m前");
}
time = time / 60;
if((time <= 23) && (time >= 1))
{
holder.time.setText(time + "h前");
}
time = time / 24;
if (time != 0)
{
holder.time.setText(time + "d前");
}
holder.rt_To.setVisibility(View.VISIBLE);
holder.rt_To.setText(item.getUser().getName() + " さんがリツイート");
holder.tweetStatus.setVisibility(View.VISIBLE);
holder.tweetStatus.setBackgroundColor(Color.GREEN);
}
holder.rt.setText("RT:" + item.getRetweetCount());
holder.fav.setText("Fav:" + item.getFavoriteCount());
String str = item.getSource();
str = str.replaceAll("<.+?>", "");
holder.via.setText(str + "より");
//自分のツイートか
if(item.getUser().getId() == My_ID){
holder.tweetStatus.setVisibility(View.VISIBLE);
holder.tweetStatus.setBackgroundColor(Color.CYAN);
}
//自分宛てのツイートか
if(item.getInReplyToUserId() == My_ID){
holder.tweetStatus.setVisibility(View.VISIBLE);
holder.tweetStatus.setBackgroundColor(Color.RED);
}
holder.progressBar.setVisibility(View.INVISIBLE);
}else{
holder.icon.setVisibility(View.GONE);
holder.name.setVisibility(View.GONE);
holder.screenName.setVisibility(View.GONE);
holder.text.setVisibility(View.GONE);
holder.time.setVisibility(View.GONE);
holder.rt_To.setVisibility(View.GONE);
holder.rt.setVisibility(View.GONE);
holder.fav.setVisibility(View.GONE);
holder.via.setVisibility(View.GONE);
holder.progressBar.setVisibility(View.VISIBLE);
}
holder.relativeLayout.setBackgroundResource(R.drawable.listitem_color);
return convertView;
}
}
0 件のコメント:
コメントを投稿