Skip to content Skip to sidebar Skip to footer

How To Find A Textview Programmatically On Listactivity

I have a ListActivity and I want to set programmatically the text of a TextView that is inside my layout, I need to do this to all my lines. This TextView will show the Currency Si

Solution 1:

You can use a Custom Adapter to your listView. If you want I can edit my answer and show you how to do this. Here is something that can put you on a right track. Adapt this code to your application. And from your activity just call setListAdapter(adapter), adapter being your custom adapter.

Hope this helps!

EDIT:

import java.util.Currency;
import java.util.Locale;

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;

publicclassCustomAdapterextendsCursorAdapter{

    publicCustomAdapter(Context context, Cursor c) {
        super(context, c);
    }

    @OverridepublicvoidbindView(View view, Context context, Cursor cursor) {
        Currencymoeda= Currency.getInstance(Locale.getDefault());
        TextViewtvMoeda= (TextView)view.findViewById(R.your_id);//your textView id here
        tvMoeda.setText(moeda.getSymbol(Locale.getDefault()));
    }

    @Overridepublic View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflaterinflater= LayoutInflater.from(context);
        Viewv= inflater.inflate(R.layout.item, parent, false);//your layout here
        bindView(v, context, cursor);
        return v;
    }

}

Solution 2:

Simple example activity that displays a list of all internal music files (ringtones etc).

MyActivity.java

publicclassMyActivityextendsActivity {
    private MyCursorAdapter mAdapter;

    // that's what we want to know from the databaseprivatestaticfinal String[] PROJECTION = newString[] {
        MediaStore.Audio.AudioColumns._ID,   // 0 - _id must be present
        MediaStore.Audio.AudioColumns.TITLE, // 1
        MediaStore.Audio.AudioColumns.DATA   // 2
    };
    // those from above - no need for cursor.getColumnIndex()privatestaticfinalintTITLE_IDX=1;
    privatestaticfinalintTEXT_IDX=2;

    @OverridepublicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListViewlv= (ListView) findViewById(R.id.list_view);
        mAdapter = newMyCursorAdapter(this, TITLE_IDX, TEXT_IDX);
        lv.setAdapter(mAdapter);

        loadContent();
    }

    // would be better to do in a Loader, AsyncTask, ...privatevoidloadContent() {
        ContentResolvercr= getContentResolver();
        Cursorc= cr.query(
                    MediaStore.Audio.Media.INTERNAL_CONTENT_URI,
                    PROJECTION, null, null, null
                );
        mAdapter.changeCursor(c);
    }
}

MyCursorAdapter.java there is no real dependency on the Cursor in this class, it's much like the SimpleCursorAdapter

publicclassMyCursorAdapterextendsCursorAdapter {
    privatefinal LayoutInflater mInflater;
    privatefinalint mTitleIdx, mTextIdx;

    /**
     * Creates a new MyCursorAdapter. Set cursor via  changeCursor / swapCursor
     * @param context <code>this</code> will usually do
     * @param titleColumnIdx cursor columnindex to be displayed as title
     * @param textColumnIdx  cursor columnindex to be displayed as text below
     */publicMyCursorAdapter(Context context, int titleColumnIdx, int textColumnIdx) {
        super(context, null, false);
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mTitleIdx = titleColumnIdx;
        mTextIdx = textColumnIdx;
    }

    @OverridepublicvoidbindView(View view, Context context, Cursor cursor) {
        TextViewtitle= (TextView) view.findViewById(R.id.title);
        TextViewtext= (TextView) view.findViewById(R.id.text);
        title.setText(cursor.getString(mTitleIdx));
        text.setText(cursor.getString(mTextIdx));
    }

    @Overridepublic View newView(Context context, Cursor cursor, ViewGroup parent) {
        Viewitem= mInflater.inflate(R.layout.list_item, null);
        // could do static init here / attach holder / set onClickListeners, ...return item;
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><ListViewandroid:id="@+id/list_view"android:layout_width="fill_parent"android:layout_height="wrap_content" ><!-- Preview: listitem=@layout/list_item --></ListView></LinearLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/title"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textAppearance="@android:style/TextAppearance.Large"android:textColor="@android:color/primary_text_dark"android:layout_marginTop="5dp" /><TextViewandroid:id="@+id/text"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textAppearance="@android:style/TextAppearance.Small"android:textColor="@android:color/secondary_text_dark"android:singleLine="true"android:ellipsize="end"android:layout_marginBottom="5dp" /></LinearLayout>

What you get

result

Post a Comment for "How To Find A Textview Programmatically On Listactivity"