小编Vas*_*Doe的帖子

notifyItemChanged(int position)更新RecyclerView中的多个项目

我使用RecyclerView显示项目列表,我需要按位置更新单个项目的状态.我正在更新列表中的项目然后调用notifyItemChanged(int position),如下所示:

myList.set(position, newModifiedItem);
notifyItemChanged(position);
Run Code Online (Sandbox Code Playgroud)

该项目已成功更新,但也会随机更新其他项目,每次我在项目列表中向上和向下滚动时,此更新(不同的图标状态)也会在其他项目上进行.

我正在进行更改onBindViewHolder,我按位置检查列表项目并决定设置不同的状态.

完整适配器代码:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {

    private List<MyObj> myList;

    public MyAdapter(List<MyObj> list) {
        this.myList = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item, parent, false);
        return new ViewHolder(view);
    }

    public void onBindViewHolder(final ViewHolder holder, final int position) {
        MyObj myObj = myList.get(position);
        boolean isSpecial = myObj.getMySpecialStatus();

        holder.myItemTitle.setText(myObj.getTitle());

        //decide if item has different icon state
        if (isSpecial) {
            holder.myItemIcon.setImageResource(R.drawable.ic_special);    
        } 
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android recycler-adapter android-recyclerview

8
推荐指数
1
解决办法
4797
查看次数

活动到活动回调侦听器

让我们假设 2 个活动Activity1Activity2。我需要调用方法methodAct1()(内Activity1从)methodAct2(内部Activity2)。我认为它应该使用回调侦听器工作 - 我不想使用EventBus库!

我得到 java.lang.NullPointerException使用这个代码:

界面:

public interface MyListener {
    public void listen();
}
Run Code Online (Sandbox Code Playgroud)

创建事件的活动:

public class Activity2 extends Activity {

    private MyListener  myListener;

    public void setUpListener(MyListener myListener) {
        this.myListener = myListener;
    }

    private void doWork(){
        //do stuff 
        myListener.listen();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在工作完成后获得该事件的活动:

public class Activity1 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Activity2 activity2 = new Activity2();
        activity2.setUpListener(new setUpListener() { …
Run Code Online (Sandbox Code Playgroud)

java android callback listener

4
推荐指数
2
解决办法
2万
查看次数

Visual Studio - 卸载应用程序后应用程序注册失败

我正在开发一个通用的 Windows 10 应用程序,每次我从 Windows 开始菜单卸载应用程序后尝试运行项目时,我都会遇到一个烦人的问题。场景是:

  1. 我在本地机器上运行项目 - 应用程序运行良好;

  2. 我按 Shift+F5 停止运行;

  3. 转到 Windows 开始菜单并卸载刚刚安装的应用程序;

  4. 从 Visual Studio 再次运行应用程序;

  5. 获取错误 1>Error : DEP0700 : Registration of the app failed. An internal error occurred with error 0x80073D05. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues. (0x80073cf6)

注意:有时Clean Solution + Rebuild Solution会有所帮助,但有时只有系统重启才能解决问题。这是官方错误还是我遗漏了什么?

c# visual-studio win-universal-app

4
推荐指数
2
解决办法
2039
查看次数

哪些 SQLite.Net.Attributes 会忽略对象字段作为列?

我在通用 Windows 中使用 Sqlite 和SQLite.Net-PCL,并为以后的表创建编写了一个类:

[Table("my_tab")]
    public class MyObj
    {
        [PrimaryKey, Column("column1")]
        public string myObjField1 { get; set; }

        [Column("column2")]
        public string myObjField2 { get; set; }

        //???
        public string myObjField3 { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是如何忽略myObjField3作为表列?

c# sqlite-net win-universal-app

4
推荐指数
1
解决办法
2186
查看次数

在ListView xaml uwp中缺少垂直滚动

我是UWP的新手,需要使用导航抽屉SplitView,所以我的基本布局结构如下所述.问题是我没有列表项的垂直滚动,也许我想念一些参数,任何帮助表示赞赏.

 <SplitView
    x:Name="MySplitView"
    DisplayMode="CompactOverlay"
    IsPaneOpen="True"
    CompactPaneLength="50"
    OpenPaneLength="280">

    <!--navigation drawer-->
    <SplitView.Pane>
        <StackPanel
            Background="Gray">

            <StackPanel>

                <ListView
                    x:Name="DrawerListOptions"
                    SelectionChanged="MySelectionChanged"
                    SelectionMode="Single"
                    ScrollViewer.VerticalScrollBarVisibility="Auto">

                    <ListView.ItemTemplate>
                        <DataTemplate>

                                    <TextBlock
                                        Text="{Binding Title}"
                                        FontSize="18"
                                        Margin="5,0,0,0" />


                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

            </StackPanel>

        </StackPanel>

    </SplitView.Pane>

    <!--page stuff-->
    <SplitView.Content>
         <!--page code-->
    </SplitView.Content>

</SplitView>
Run Code Online (Sandbox Code Playgroud)

xaml win-universal-app

3
推荐指数
1
解决办法
6809
查看次数

C#中的替代内联接口实现

我想在C#中使用内联接口实现,但是读了一些这样的文章,我发现这不像Java。

假设此接口:

public interface MyListener {
    void onHandleOne();
    void onHandleTwo();
    }
Run Code Online (Sandbox Code Playgroud)

我将此接口作为参数传递:

   myMethod(MyListener listener){
    //some logic
   }
Run Code Online (Sandbox Code Playgroud)

当我调用它时,我想像在Java中那样进行内联实现:

myMethod(new MyListener () {
                    @Override
                    public void onHandleOne() {
                        //do work
                    }

                    @Override
                    public void onHandleTwo() {
                        //do work
                    }
                });
Run Code Online (Sandbox Code Playgroud)

另外,我制作了一个实现yhis接口的类,并使用该类来调用我的方法:

public class MyImplementor : MyListener  {
    public void onHandleOne() {
        //do work
        }

    public void onHandleTwo() {
        //do work
        }
    }
Run Code Online (Sandbox Code Playgroud)

并调用我的方法: myMethod(new MyImplementor()) 但是每次我要调用此方法(针对不同的行为)时,此解决方案都需要一个新的类,也许有一种方法可以使用lambda或以某种方式做到这一点:

myMethod(new MyImplementor() =>{//handle my methods})

c# lambda interface

3
推荐指数
1
解决办法
1765
查看次数

在通用Windows平台中播放声音

我想在uwp应用程序中播放.mp3或wav声音,我只需要在应用程序打开且ui上没有任何媒体元素的情况下播放它。是否有可能使某些线程同时播放单独的歌曲。任何有关的信息表示赞赏。

c# win-universal-app

3
推荐指数
1
解决办法
4164
查看次数

使通用Windows平台中的特定ListView项无法单击

ListView在我的XAML中使用了一个元素:

                <ListView
                x:Name="myList"
                IsItemClickEnabled="true"
                ItemClick="onDrawerItemClick"
                SelectionMode="Single"
                ScrollViewer.VerticalScrollBarVisibility="Hidden">

                <ListView.ItemTemplate>
                    <DataTemplate>

                        <Grid
                            Width="260">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition
                                    Width="44" />
                                <ColumnDefinition
                                    Width="*" />
                            </Grid.ColumnDefinitions>

                            <Image
                                x:Name="image"
                                Source="{Binding myIcon}"
                                Grid.Column="0" />

                            <TextBlock
                                Text="{Binding myTxt}"
                                Grid.Column="1" />

                        </Grid>

                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
Run Code Online (Sandbox Code Playgroud)

我使用Bind属性填充它,如下所示:

List<MyObj> listData = a list with title + image uri;
myList.ItemsSource = listData;
Run Code Online (Sandbox Code Playgroud)

我需要禁用一些项目的点击,具体取决于MyObj我的列表中的某些值,但其他项目要有.在Android中我们使用适配器,我应该如何处理它?

c# xaml microsoft-metro win-universal-app uwp

3
推荐指数
1
解决办法
2701
查看次数

取消Windows 10 BackgroundDownloader

我想为BackgroundDownloader实现一个超时功能.当我达到超时时,我无法取消下载操作.所以我这样使用它:

   public async void downloadFile(string fileUrl, string fileName) {
        var myFolder = await StorageFolder.GetFolderFromPathAsync(Package.Current.InstalledLocation.Path);
        var myFile = await myFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

        var downloader = new BackgroundDownloader();
        var downloadOperation = downloader.CreateDownload(new Uri(fileUrl), myFile);

        var task = Task.Run(async () => await downloadOperation.StartAsync().AsTask());
        if ( task.Wait(TimeSpan.FromMilliseconds(1000)) ) {
            // file is downloaded in time

        } else {
            // timeout is reached - how to cancel downloadOperation ?????

        }
    }
Run Code Online (Sandbox Code Playgroud)

我在努力:

downloadOperation.StartAsync().Cancel();
Run Code Online (Sandbox Code Playgroud)

我明白了

WinRT信息:此操作已经开始.调用AttachAsync以附加到正在运行的下载/上载.

downloadOperation.AttachAsync().Cancel();
Run Code Online (Sandbox Code Playgroud)

我明白了

抛出异常:Project.exe WinRT信息中的"System.Runtime.InteropServices.COMException":此操作未启动.调用StartAsync以启动操作.附加信息:在意外时间调用方法.

任何想法都会被贬低!

c# win-universal-app

3
推荐指数
1
解决办法
688
查看次数

Glide 无法解析方法 .asGif()

我有代码:

  Glide.with(getActivity())
  .load(myurl)
  .asGif()
  .into(ivGif);
Run Code Online (Sandbox Code Playgroud)

我在 gradle 中导入了 glide:

  repositories {
  mavenCentral()
  maven { url 'https://maven.google.com' }
  }

dependencies {
  compile 'com.github.bumptech.glide:glide:4.2.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
Run Code Online (Sandbox Code Playgroud)

编译器说

无法解析方法.asGif()

我错过了什么吗?

android android-glide

3
推荐指数
1
解决办法
3506
查看次数