Android :: List Item Order Changes Unexpectedly While Scrolling
Sep 1, 2010
I am new to android, and ended up (have to) ask a question here, Let's make it simple, I simply want to make my own TextView-like (MyView extends View). This is my code:
public class MyView extends View { private Paint mPaint; private String mText;
private Bitmap mBitmap1; private Bitmap mBitmap2; public MyView(Context context) {
super(context); initView(); } public MyView(Context context, AttributeSet attrs) {
super(context, attrs); initView(); } private final void initView() {
mPaint = new Paint(); } public void setText(String text) { mText = text;
} @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measuredWidth = measureWidth(widthMeasureSpec);
if (mBitmap1 == null) initBitmap1(measuredWidth);
int measuredHeight = measureHeight(heightMeasureSpec);
setMeasuredDimension(measuredWidth, measuredHeight);
} private void initBitmap1(int measuredWidth) {
mBitmap1 = Bitmap.createBitmap(measuredWidth, Fonts.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(mBitmap1 ); canvas.drawText(mText, 0, 0, mPaint);
} private void initBitmap2() { mBitmap2 = Bitmap.createBitmap(30,
Fonts.getHeight(), Bitmap.Config.ARGB_4444); Canvas canvas = new Canvas(mBitmap2;
canvas.drawText(mText, 0, 0, mPaint);}
private int measureWidth(int widthMeasureSpec) { int measuredWidth = 0;
int specWidthMode = MeasureSpec.getMode(widthMeasureSpec);
int specWidthSize = MeasureSpec.getSize(widthMeasureSpec);
if (specWidthMode == MeasureSpec.EXACTLY) { measuredWidth = specWidthSize;
} else { measuredWidth = getWidth(); if (specWidthMode == MeasureSpec.AT_MOST) {
measuredWidth = Math.min(measuredWidth, specWidthSize);
} } return measuredWidth; }
private int measureHeight(int heightMeasureSpec) {
int measuredHeight = 0; int specHeightMode = MeasureSpec.getMode(heightMeasureSpec);
int specHeightSize = MeasureSpec.getSize(heightMeasureSpec);
if (specHeightMode == MeasureSpec.EXACTLY) {
measuredHeight = specHeightSize; } else { measuredHeight = 80;
if (specHeightMode == MeasureSpec.AT_MOST) { measuredHeight = Math.min(measuredHeight, specHeightSize);
} } return measuredHeight; }
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas); canvas.drawBitmap(mBitmap1, getLeft(), 0, mPaint);
initBitmap2(); canvas.drawBitmap(mBitmap2, getLeft(), 30, mPaint); } }
View 9 Replies
Sep 2, 2010
I am new to android, and ended up (have to) ask a question here. Let's make it simple, I simply want to make my own TextView-like (MyView extends View), This is my code:
public class MyView extends View { private Paint mPaint;
private String mText; private Bitmap mBitmap1; private Bitmap mBitmap2;
public MyView(Context context) { super(context); initView(); }
public MyView(Context context, AttributeSet attrs) { super(context, attrs);
initView(); } private final void initView() { mPaint = new Paint(); }
public void setText(String text) { mText = text; }
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measuredWidth = measureWidth(widthMeasureSpec);
if (mBitmap1 == null) initBitmap1(measuredWidth);
int measuredHeight = measureHeight(heightMeasureSpec);
setMeasuredDimension(measuredWidth, measuredHeight);
}
private void initBitmap1(int measuredWidth) {
mBitmap1 = Bitmap.createBitmap(measuredWidth, Fonts.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(mBitmap1 ); canvas.drawText(mText, 0, 0, mPaint);
} private void initBitmap2() {
mBitmap2 = Bitmap.createBitmap(30, Fonts.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(mBitmap2); canvas.drawText(mText, 0, 0, mPaint);
} private int measureWidth(int widthMeasureSpec) {
int measuredWidth = 0; int specWidthMode = MeasureSpec.getMode(widthMeasureSpec);
int specWidthSize = MeasureSpec.getSize(widthMeasureSpec);
if (specWidthMode == MeasureSpec.EXACTLY) { measuredWidth = specWidthSize;
} else { measuredWidth = getWidth(); if (specWidthMode == MeasureSpec.AT_MOST) {
measuredWidth = Math.min(measuredWidth, specWidthSize);
} } return measuredWidth; }
private int measureHeight(int heightMeasureSpec) {
int measuredHeight = 0; int specHeightMode = MeasureSpec.getMode(heightMeasureSpec);
int specHeightSize = MeasureSpec.getSize(heightMeasureSpec);
if (specHeightMode == MeasureSpec.EXACTLY) { measuredHeight = specHeightSize;
} else { measuredHeight = 80; if (specHeightMode == MeasureSpec.AT_MOST) {
measuredHeight = Math.min(measuredHeight, specHeightSize);
} } return measuredHeight;
} @Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas); canvas.drawBitmap(mBitmap1, getLeft(), 0, mPaint);
initBitmap2(); canvas.drawBitmap(mBitmap2, getLeft(), 30, mPaint);
} }
In my code, I populate some numbers of MyView (let's say 20) in a ListActivity. My question is why mBitmap1's order changes randomly while i scroll (up-down) fastly (if I scroll slowly, this problem not occur)? mBitmap2 stays where those should be.
View 1 Replies
View Related
Oct 17, 2010
Trying to implement simple dictionary. I want to make it so while the user is typing in the EditText box the list to scroll automatically to the best match. I don't want it to filter the list. For example if the user types "s" in the EditText I want the first word that s/he sees under the EditText box to be the first word in the dictionary that starts with "s." But the user should still be able to slide up and down and to be able to see the entire list of words. It is basically like a go to functionality. I used ArrayList to store my list of words. The data is in res/raw/data.xml file. Here is my onCreate method
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wordListView = (ListView)findViewById(R.id.wordList);
myEditText = (EditText)findViewById(R.id.myEditText);
words = new ArrayList<Word>();
arrAdap = new ArrayAdapter<Word>(this, android.R.layout.simple_list_item_1, words);
wordListView.setAdapter(arrAdap); try {
InputStream inSource = getResources().openRawResource(R.raw.data);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(inSource, null);
NodeList wordsList = doc.getElementsByTagName("eng-bg");
int length = wordsList.getLength();
for(int i = 0; i<length; i++) {
Element entry = (Element)wordsList.item(i);
Element eng = (Element)entry.getElementsByTagName("english").item(0);
Element bul = (Element)entry.getElementsByTagName("bulgarian").item(0);
Element id = (Element)entry.getElementsByTagName("ID").item(0);
String english = eng.getFirstChild().getNodeValue();
String bulgarian = bul.getFirstChild().getNodeValue();
int wordId = Integer.parseInt(id.getFirstChild().getNodeValue());
Word word = new Word(bulgarian, english, wordId);
addNewWord(word);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}wordListView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
selectedWord = words.get(pos);
showDialog(TRANS_DIALOG);
myEditText.setText(selectedWord.getEnglish());
myEditText.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence s, int start, int before, int count) {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
View 1 Replies
View Related
Apr 9, 2010
I don't know exactly how to explain this problem, but I'll try. I have a ListView with several items. Each item has inside a TextView and two ImageView. I want the ImageView change when I click on them, and I want to open a context menu when I press for a long time into the ListView item.For the ImageView, everything works properly. For the whole item, I can show the context menu after a long press, but my problem is that the ImageView changes as well when I am pressing the TextView, for example.I hope you understand my problem. I think that all the children of a view are affected by an event in the parent, but I am not sure.
View 2 Replies
View Related
Nov 20, 2010
I jave a list of item (linearlayout inside a scrollview where i add buttons vertically to linearlayout dynamically from the java code)i need when i click on one button the item moves up (scroll up) , to make the item at the first of the screen
View 1 Replies
View Related
Nov 4, 2010
I am on my first Android application and I am on a timeline so details and examples will be useful since my knowledge is still minimal. I want my first screen to present the user with a list of activities to choose from. In my situation it is a recipe app where the user first chooses the type of food, such as, Beef, Chicken, or Pork. I want the application to launch an activity depending on the list item that the user clicked on. I am not sure if I should use a list view, a text view, a scroll view, a list activity, an activity group...
View 1 Replies
View Related
Nov 24, 2010
we are wroking on the displaying of mails from an email . we got the list of emails stored . we need to show a small text screen which consists of the some content of the body when the email in the list gets focus .
View 4 Replies
View Related
Apr 23, 2010
I'm trying to create a multiple selection list where the selection is represented graphically rather than with checkboxes.My list has checkboxes, but I want them to serve a different purpose. I'm using a cursor to hold my data and created a custom view binder for the SimpleCursorAdapter. I did this for the checkboxes and general flexibility.So far I haven't even been able to show one line as being selected. I've enabled multiple selection on the list and denied the children of the list item focusability. I've tried manually changing background color with the position fed in through the list item click listener. But the wrong items get changed and they don't even change to the right color. I've enabled touch focusability with no improvement either.Ideally, I'd like the trackball highlight focus bar to appear in multiple places. But I don't think this is possible unless you use the drawable directly. But I don't know how to find or apply it. My next idea was to have a slim view bar that changes color. But I had the same problem with the wrong item being selected so I never finished trying to guess the index position to see if this would work. My most recent idea is to completely swap out the view for another one if it's selected. But I have no idea how to do this either. I'm thinking of using an array list to store the _id s of the items that need a different view to get around the wierd selection problem. I'm also thinking of passing in the ID field as my from and the selection view as the to for my adapter. Then I'd intercept it with my binder and change the view accordingly. But once again, I'm not sure how to do this successfuly.
View 7 Replies
View Related
Aug 23, 2010
I use tabs in my Android application and one of my tabs contains a listview. I'm noticing some weird behavior when I override isEnabled in my list's adapter and then try to use the D-pad to move up and down through the list and to my tabs.If the 0th item of the list is enabled, then everything works as expected - I can move down through the list, and then up again and once I reach the top of the list, pressing up moves focus to my tab.However, if the 0th item is DISABLED (isEnabled in my adapter returns false), then when I press up while position 1 is focused, the focus gets stuck. It doesn't move up to the tab as I would have expected and instead stays on position 1 of the list.
View 1 Replies
View Related
Jul 14, 2010
By Default in the Listview,focus will come on the list item.Instead of that, can I get only the border to the list item?I can achieve this by using a transparent image as a list selector.Is there any other simplest way to achieve this requirement?
View 1 Replies
View Related
Oct 18, 2010
I have used tab view and inside frame first view is ListView.My list view has white and blue background alternately like 1st is white, 2nd blue, 3rd white, 4th blue.I have tried disabing cachehint and even using it. But when i scroll the alternate colors are broken like we can see 2 consecutive in white or blue. Sometimes even 3 in same color. This happens when i scroll the list.
View 2 Replies
View Related
Nov 16, 2010
I have a List and ContextMenu for that List. Now when I long pressed on list then onCreateContextMenu method is invoked.Now I want to know on which list item I long pressed. I had tried but I got only got index. of that list item. How to get name of that list item?
View 2 Replies
View Related
Nov 20, 2009
Can any one tell me how can I highlight any item of my list when mouse cursor passes through that particular item. Is this possible to highlight any particular option/item using soft keys?
View 4 Replies
View Related
Feb 1, 2010
I'm trying to find out how I can create a pop-up menu bar, after I press on a checkbox item, so I can do multiple things like delete.If anyone know about any tutorial, or article it will be fully estimated!
View 1 Replies
View Related
Oct 7, 2010
Other than using listeners, is there any way by which i can get index of an item in the list?
View 2 Replies
View Related
Jun 8, 2010
I have this Code to Capture a image and Display it back in ListView onclick of the listitem i can capture image and save to image View, but how can get on the left of the list item?
View 3 Replies
View Related
Jun 8, 2010
I am trying to teach myself the basics of Android dev. At the moment I am experimenting with home screen widgets. I would like to create a simple widget that lists all my bookmarks. Somewhere in my googling I read that ListView is not usable in a widget. What's the best way to display a scrolling list in a widget?
View 1 Replies
View Related
Aug 12, 2010
We're working with a pre-release device running V2.1_update1 We have a ListView in the middle of a screen with the height set to wrap-content. On all other devices, as long as there is room on the screen, this control does not scroll--or if it does scroll, it only scrolls to the limits of the entries in the list. On this new device, there is definitely room for the list so it should not be scrolling at all, but the ListView scrolls and seems to have elastic whitespace above and below (and separator lines above the top item and below the bottom item). Thus, when you drag down, the whole list scrolls down within the limits of the view's bounds (i.e. it clips there) and then when you release the drag, the list springs back up to its normal position. This latter behavior makes it seem like there is deliberate code that has been put in for this--but we certainly didn't do that. What could cause this? Is there a setting that has defaulted one way on this device that defaults opposite on other devices?
View 2 Replies
View Related
Oct 8, 2010
It seems like the best way to create a horizontal scrolling list of images is to use the Gallery widget. I need to display sidebar text with each image.The examples I have seen showing how to use the Gallery widget only show images. Is it possible to display a list of images+text descriptions in a Gallery, and if it is, does anyone have an example of how to do this?
View 4 Replies
View Related
Aug 11, 2010
I am making a very simple dump and display app. I would like to see my newly entered data displayed on the list found on the first tab. But I don't know where to place requery();
Here is the code for the first tab. (Displays the data from DB.)
CODE:.........
I have tried doing (pseudo codes only)
CODE:........
And
CODE:............
But BOTH don't work!
View 3 Replies
View Related
Sep 16, 2010
I have a list (ListView) which displays news items. They contain a image, title and some text. The image is loaded in a separate thread (with a queue and all) and when the image is downloaded, I now call notifyDataSetChanged() on the list adapter to update the image. This works, but getView() is getting called way to often now, since notifyDataSetChanged() calls getView() for all visible items. I want to update just the single item in the list. How would I do this?Problems I have with my current approch is that the list is slow and I have a fadein animation on the image which happens every time a single new image in the list is loaded.
View 2 Replies
View Related
Aug 3, 2010
I am trying to set 6 icon in 6 different items in list but not getting how to do it.
View 3 Replies
View Related
Aug 31, 2010
I want to display a list item that says "More" at the end of my ListView. Clicking on this list-item will perform some action. How can I create this "more" list item?
View 3 Replies
View Related
May 21, 2009
I have the list view which is having 10 Items. I want to block few items (Disable). How do i do this? Can any one help me?
View 2 Replies
View Related
Feb 1, 2009
I have a ListView that is populated with a custom adapter. When an item is clicked with the trackball, it works fine, i.e. I can catch the event and move on, though when I touch an item with my finger there is no callback from the listener.The item does respond to the touch, by turning orange for that moment.What am I missing? Is there another listener I need to configure?
View 11 Replies
View Related
Aug 28, 2009
How i get the Selected item from the list Adapter.In this above code if i selected March from the Dropdown Adapter means then how can i retrieve the Manth March to show in a textview.
View 5 Replies
View Related
Sep 24, 2010
One thing driving me crazy in Android is if you start typing say in a search box (like in market, maps, etc.) and you see a choice that is almost what you want, you cannot select it and modify it.For example, I accidentally type pinboll in market.It finds nothing.I start to type pin again, there is pinboll. There seems to be no way to select that and be able to change the one letter. I have to retype the whole thing. Am I missing something?
View 3 Replies
View Related
May 17, 2010
I occur a problem when develop a application on android.There have two image which can be download from server in a list item, it will show one image and will show another image when user select or click this item.if I try to download another image from server when user click it,the user will never have time to see it, for this time is shorter than download image form server,so i want to download two of them,and when I click it again,the app can invoke another image from local.but I do not know how to invoke this image?
View 1 Replies
View Related
Sep 28, 2010
When I change the background color of a list item it no longer flashes green when selected. Is there a way to retain this default behavior when the background is changed?
View 2 Replies
View Related
Jan 15, 2010
I have a list of 70 text items with image icons(which are stored in drawables folder).
If I launch application the first time and scroll the list slowly - the exception doesn't occur.
When the application is launched the first time and I scroll the list with 'fling' action the following exception occurs:
COD:.....................
After that, if I kill the application with DDMS, start it again and scroll it with 'fling' action, exception doesn't occur. So the exception arises only if application is installed and launched the first time.
Here is the adapter I use for the list:
CODE:................
Is there a way to avoid the exception? Should I catch the exception and escape the memory somehow?
View 1 Replies
View Related